Stvaranje 3d igre za android unity. Izrada igre na Androidu. Što je game designer

Razvoj igara za Android OS uređaje zahtijeva pristup sličan razvoju za iOS. S druge strane, hardver Android uređaja ne podliježe jasnim standardima, zbog čega je potrebno riješiti probleme kojih nema u radu s iOS-om. Također postoje razlike između Android i iOS verzija Unityja.

Priprema razvojnog okruženja za Android

Prije nego što možete testirati svoje igre na uređaju, morat ćete pripremiti svoje razvojno okruženje. Konkretno, preuzmite i instalirajte Android SDK željene platforme i dodajte svoj uređaj u sustav (ovaj postupak je drugačiji za Windows i Mac). Ovo je detaljno napisano na web stranici Android Developers, kao i Dodatne informacije može pružiti proizvođač vašeg uređaja. Budući da je ovo prilično kompliciran proces, pripremili smo malu uputu koja će vam pomoći da pripremite sve što vam je potrebno za razvoj. Ako trebate više informacija, možete ih dobiti na Android Developer Portalu.

Pristup značajkama Androida

Unity pruža API za pristup Android unosu i postavkama. Dostupne klase dokumentirane su na stranici Code for Android Assemblies.

Povezivanje C, C++ ili Java koda sa skriptama

Unity vam omogućuje pozivanje funkcija napisanih u C/C++ izravno iz skripti (Java funkcije mogu se pozivati ​​neizravno). Da biste saznali kako pristupiti funkcijama iz izvornog koda iz Unityja, posjetite stranicu za izradu Android dodataka.

Odstranjivanje okluzije (odsijecanje nevidljive geometrije)

Unity pruža podršku za uklanjanje okluzije, što je vrlo korisno pri optimizaciji za mobilne platforme. Više informacija možete pronaći na stranici za uklanjanje okluzija.

Prilagodba početnog zaslona

Početni zaslon koji se prikazuje kada igra počne može se prilagoditi - pogledajte ovu stranicu za više informacija.

Rješavanje problema i prijava pogrešaka

Mnogo je razloga zašto se vaša aplikacija ruši ili ne radi ispravno. Naš vodič za rješavanje problema specifičnih za Android pomoći će vam da riješite uzroke pogrešaka u najkraćem mogućem roku. Ako nakon čitanja priručnika pretpostavite da je problem u Unityju, trebali biste podnijeti izvješće o bugu. Za upute pogledajte ovu stranicu.

Kako se Unity za Android razlikuje od desktop verzije

JavaScript sa jakim tipkanjem

Kako bi se poboljšala izvedba u Android verziji Unityja, dinamičko tipkanje u JavaScriptu uvijek je onemogućeno (kao da se #pragma strict automatski primjenjuje na svaku skriptu). Ovo je važno zapamtiti ako prenosite projekt na Android sa starijih platformi, a ako naiđete na pogreške kompilacije, problem prije svega treba tražiti u tipkanju. S takvim se pogreškama obično lako pozabaviti osiguravanjem da su tipovi svih varijabli eksplicitno navedeni ili cast tijekom inicijalizacije.

Iako Unity Android podržava DXT/PVRTC/ATC teksture, Unity će tijekom izvođenja dekomprimirati teksture u RGB(A) format ako te metode kompresije nisu podržane na određenom uređaju. To može ozbiljno utjecati na performanse GPU renderiranja, stoga se preporučuje korištenje ETC formata. To je de facto standard za Android i trebali bi ga podržavati svi moderni uređaji. S druge strane, ETC ne podržava alfa kanal, a ponekad će 16-bitne RGBA teksture biti najbolji izbor u smislu kvalitete, veličine i brzine renderiranja gdje je alfa kanal potreban.

Unity 3D bit će nezamjenjiv alat za one koji profesionalno pristupaju zadatku stvaranja visokokvalitetnog materijala. Aplikacija integrira gotove modele, skripte i teksture, koje je moguće nadopuniti vlastitim sadržajem - slikama, zvukovima i video zapisima.

Gotovi proizvodi stvoreni u Unity 3D kompatibilni su s gotovo svim popularnim platformama - u rasponu od Mobiteli i završava s SMART TV-ima.

Značajke programa:

  • mehanizam za učenje Unity;
  • fleksibilan višenamjenski urednik;
  • velika brzina kompilacije;
  • sučelje jednostavno za učenje;
  • kompatibilnost s velikim brojem platformi.

Princip rada

Za korištenje programa potrebno je preuzeti Unity Hub platformu, a putem nje možete isprobati mogućnosti besplatne Personal verzije. Dostupan je s količinama monetizacije do 100 tisuća dolara godišnje.

Osim besplatne verzije, možete se pretplatiti na još dvije napredne verzije:

Unity Plus (~25 USD mjesečno) - omogućuje ograničeni pristup Customer Success Advisor servisu, prikuplja informacije o kvarovima na korisničkim uređajima, prati povratne informacije.

Unity Pro (~125 USD mjesečno) najveća je opcija pretplate. Pruža podršku od strane profesionalnih programera, omogućuje vam da dobijete prioritetni pristup podršci od kreatora programa, uključuje poboljšane mogućnosti za praćenje performansi i prikupljanje statistike.

Izgradnja svih akcije igre temelji se na dovoljno kvalitetnoj fizičkoj jezgri programa (PhysX) o kojoj ovisi ponašanje modela. Zahvaljujući mogućnosti uvoza tekstura i objekata, proizvod možete učiniti jedinstvenim ili koristiti alate koje je integrirao programer. Važno je razumjeti da je svaki objekt stvoren u ovom konstruktoru određeni skup skripti i događaja koje možete sami kontrolirati.

Da biste profesionalno radili s Unity 3D, potrebno vam je neko vrijeme da se upoznate sa sučeljem i značajkama aplikacije. Da biste to učinili, možete pronaći puno videozapisa na internetu ili posjetiti specijalizirane tečajeve koji se održavaju u mnogim velikim gradovima.

Treba napomenuti da za rad s 3D grafikom morate imati moderno računalo s hardverskom video karticom.

Prednosti:

  • gotovo neograničena funkcionalnost za izradu projekata;
  • podrška za 3D grafiku temeljenu na pregledniku;
  • kompatibilan sa igraće konzole i moderni televizori;
  • veliki broj alata za vizualizaciju;
  • postoji besplatna verzija.

minusi:

  • potrebna su specifična znanja za stvaranje kvalitetnog proizvoda;
  • ne postoji mogućnost vrlo finog podešavanja fizičke jezgre programa;
  • nema prijevoda sučelja na ruski.

Možete preuzeti Unity 3D ne samo da pripremite konkurenta popularnoj online igrački Juggernaut (koja je također nacrtana alatima heroja naše recenzije), već i da stvorite šik 3D prezentacije. Neka potraje još malo, ali wow efekt za publiku je zajamčen.

Da biste se upoznali s mogućnostima platforme, samo preuzmite besplatna verzija Jedinstvo 3D. Ako trebate pristup izvornom kodu, potražite plaćene verzije.

Analozi:

  • urednik igre- besplatna aplikacija za stvaranje igara;
  • Construct 2 je popularan konstruktor igara s jednostavnim sučeljem.
  • Construct 2 je moćan program za izradu 2D projekata.

Zdravo! Nakon što sam naučio kako napraviti igre na ovom motoru, želim i vas naučiti isto. Prvo, trebamo sam Unity3d, bilo koji uređivač 3D modela i ravne ruke koje rastu iz ramena.

1. Učenje programa

Za početak, preporučam instaliranje Monodevelop! Shvatimo što je Jedinstvo. Unity je okruženje za razvoj igara na više platformi. Upravo zbog njegove jednostavnosti i razumljivosti svaka treća osoba je barem jednom napravila igre na njemu.

Razmotrite gornju snimku zaslona:

  • Pozornica je vaš kreativni pješčanik.
  • Projekt - ovdje su sve animacije i modeli, zvukovi i teksture.
  • Za instaliranje modela na gornjoj alatnoj traci odaberite Assets-Import New Asset. Također možete Assets-Import Package-Custom Package. U drugom slučaju, paket mora biti u ekstenziji .unity.
  • Hijerarhija - svi objekti u sceni. Tamo stvarate roditelje za objekt. Samo premjestite objekt na drugi u hijerarhijskom izborniku i on će biti priložen. Rezultat će biti neka vrsta mape.
  • Alatna traka - popis alata. Tamo možete omogućiti 2D, 3D način rada.
  • Inspektor - značajka objekta, gdje dodajete animacije, skripte i još mnogo toga. Tamo možete koristiti alate: pomicanje kamere, pomicanje objekta, rastezanje, rotiranje objekta.


Sada vidite izbornik objekta u koji možete dodati animaciju, skripte i više.

Mislim da s ovim jelovnikom nećete imati problema.
Kliknite za stvaranje bilo kojeg objekta.

Općenito, proučili smo program, uskoro ćemo moći pisati vlastite igre.

2. Napravite jednostavnu igru

Prvo, stvorimo teritorij Create-Terrain. Dodajte travu i drveće. Klikom na tlo s desne strane pojavit će se prozor, odaberite stabla, travu.


Također stvorite planine i neravnine. Zatim učitajte paket kontrolera Characher u projekt. Zatim tražimo u prozoru s projektom kontrolera standardnih sredstava-likova i odabiremo pogled u prvom licu (kapsula) ili pogled u trećem licu (mehaničar).
Ako je prva osoba, samo je stavite na zemlju. Ako iz trećeg, onda morate preuzeti animaciju. Također preporučujem postavljanje osvjetljenja scene na Create-Directional Light.


Za dodavanje glazbe, povucite je do željene stavke.
Igra je spremna, ali kako je kompajlirati?

Da biste to učinili, idite na File-Build settings-player settings (za oznaku i naziv). Odaberite platformu i gotovi ste. Da biste to učinili, morate instalirati Android SDK. Ali tamo trebate navesti mapu s SDK-om, a ne trebate samo SDK, već i API željene razine (na primjer, Android 4.2 ima API 17). Na primjer, kako bi igra bila na Androidu 4.0+, trebate instalirati ove API-je.

U sljedećem članku ću vam reći kako postaviti kontrole za Android ili iOS i naučiti kako sami pisati skripte.

Razvoj mobilne aplikacije jedno je od najprofitabilnijih zanimanja u računalnoj industriji. Izrada igre za Android košta stotine ili tisuće dolara, a zarada može doseći i milijun dolara. U tom smislu, mnogi su ljudi zainteresirani za razvoj aplikacija za telefon. U ovom ćete članku naučiti kako stvoriti Android igru ​​od nule pomoću računala, koji motor i dizajner je bolje odabrati.

nikakav uspješna igra ne može bez lijepa grafika Stoga je stvaranje dizajna jedna od najvažnijih faza razvoja. Dizajn na Android OS-u implementiran je pomoću "dizajn dokumenta" ili dizajn dokumenta. Morate početi stvarati igračku s njezinim detaljnim proučavanjem. Datoteka sadrži:

  1. Objektni modeli;
  2. Funkcionalne specifikacije;
  3. Sadržaj igre;
  4. Sučelje.

Razmotrimo svaku od točaka detaljnije.

Objektni modeli

Ovo su informacije o funkcionalnosti svake stavke. Modeli objekata odgovorni su za mogućnost kupnje i prodaje predmeta, kao i za poboljšanje karakteristika igre likova.

Funkcionalne specifikacije

Opisuje igranje, glavne značajke svakog lika. Ovdje je i opis značajki predmeta igre - oružja, kompleta prve pomoći, oklopa i drugih. U biti, funkcionalne specifikacije su pravila po kojima proces igre. Što je ovaj odjeljak bolje razrađen, to će biti lakše stvoriti visokokvalitetnu Android igru.

Sadržaj igre

Ovo je tekstualno punjenje igre. Opisuje dijaloge likova i koja se oružja mogu koristiti za nanošenje štete, koliko će zdravlja uzeti pogodak, koje će se karakteristike povećati korištenjem različite opreme. Također sadrži Detaljan opis svaki predmet.

Sučelje

Sučelje je način na koji će korisnik komunicirati s igrom. Sadrži gumbe pomoću kojih možete kontrolirati lik i odjeljke izbornika: na primjer igra, rezultat, postavke, najbolji igrači, pomoć. Ako nemate iskustva u izradi Android aplikacija, prije nego što izradite vlastitu, preuzmite s Play Marketa i analizirajte popularne igre i prenesite najbolja rješenja na svoj projekt.

Motor igre

Srž svake igre je motor. Ovo je softver koji vam omogućuje da ga razvijete i pokrenete. Sadrži cijeli niz programa, uključujući motor za renderiranje, motor za fiziku, zvuk, animaciju i još mnogo toga. Kako bi olakšali proces pisanja programa, programeri trećih strana stvaraju vlastite motore igara posebno za Android aplikacije.

Svaki od njih nudi različite značajke: neki su dizajnirani za 3D, drugi za 2D, može biti podržana multiplatforma. Postoji ogroman broj takvih motora, ali ako ste početnik, bolje je odabrati jedan od najpopularnijih, jer će tamo biti prisutne sve potrebne funkcije.

UDK

Okretni moment 2d/3d

Što je dizajner igara?

Constructor je program koji kombinira pokretač igre i integrirano razvojno okruženje. Konstruktor čini razvojni proces dostupnim osobama koje nemaju vještine programiranja. Neki od dizajnera omogućuju vam stvaranje igara određenih žanrova, drugi imaju maksimalnu funkcionalnost, ali koštaju mnogo više novca. Za početnika kreatora mobilnih aplikacija, izbor dizajnera jedan je od najvažnijih trenutaka, jer će o njegovim mogućnostima ovisiti sudbina buduće aplikacije.

Konstruktor vam omogućuje stvaranje igara različitih žanrova za Windows, Android i iOS. Ponude veliki izbor gotove lokacije, objekte, likove i dizajn zvuka, tako da izrada prve Android igre neće oduzeti puno vremena. Korisnici koji su upoznati s programskim jezicima JS i C++ mogu koristiti ugrađeni GML. Jedina mana je što program nije preveden na ruski.

Zaključak

Stvaranje igre za Android nije jednostavan, ali vrlo isplativ posao. Ako odlučite razviti igru ​​i zaraditi na njoj, prvo razradite ideju. Zatim napišite "dokument dizajna" i odlučite se za motor igre koji može maksimalno iskoristiti svoj potencijal. Nakon toga možete nastaviti izravno s izradom aplikacije u konstruktoru.

Video

Kako biste saznali više o procesu stvaranja Android igara, pogledajte niz videozapisa posvećenih ovoj aktivnosti.

Kako brzo i relativno jednostavno napraviti jednostavnu igru ​​ili aplikaciju za Android? O tome pročitajte u članku ispod, koji se bavi radom s Unity3D motorom.

Igrate li igrice na računalu? Ako je tako, onda ste sigurno u procesu prolaska sljedećeg blockbustera igre ponekad imali misli poput: "Ali evo, učinio bih to pogrešno!". Želite li i sami biti programer? Onda vam nudim malu, ali vrlo zabavnu "avanturu";)

Što je motor i zašto je potreban?

Ranije, još u doba prvih računala, igrice i programi stvarani su takozvanom "hardcore" metodom. To jest, za potpuni razvoj, bilo je potrebno biti prilično iskusan programer koji temeljito poznaje svoj programski jezik i može napisati gotovo cijelu igru ​​(uključujući pikselnu grafiku i specijalne efekte!) U jednostavnom Notepadu. Takvih je ljudi bilo malo i bili su jako cijenjeni (i još uvijek se cijene)...

Danas se prag za ulazak u temu programiranja znatno smanjio. A to je olakšano ne samo dostupnošću literature i svih vrsta materijala za obuku, već i sve jednostavnijim procesom razvoja. Danas je rijetkost susresti prave "hardcore" ljude, budući da su se pojavila prilično zgodna razvojna okruženja koja se nazivaju "motori".

Bit motora je da vam omogućuje da uvezete sve potrebne objekte igre u pojednostavljenom vizualnom načinu, rasporedite ih na virtualnoj pozornici i konfigurirate sve njihove parametre. Odnosno, zadatak programera je samo ispravno napisati logiku igre!

Međutim, morate platiti za udobnost rada s blagim povećanjem veličine projekta (ponekad čak i nekoliko puta!) U usporedbi s njegovim kolegom, napisanim na stari "hardcore" način. Iz tog razloga neki programeri ne vole motore ili pokušavaju napisati vlastite, u kojima se koriste samo komponente koje su im potrebne ...

Ali ti i ja smo daleko od pravih programera :) Stoga, kreirajmo jednostavnu igru ​​za Android temeljenu na popularnom i moćnom Unity3D motoru.

Početak rada s projektom u Unity3D

Dakle, zašto smo odlučili koristiti Unity3D:

  • mogućnost stvaranja punopravnih 2D i 3D igara;
  • mogućnost sastavljanja gotove igre za bilo koji uređaj;
  • relativna jednostavnost upravljanja motorom;
  • dobra proširivost funkcionalnosti povezivanjem dodataka;
  • relativno mala veličina konačne montaže igre (u usporedbi s drugim motorima).

Glavni adut Unity3D-a je, naravno, njegova svestranost i multiplatformnost. Završena igra(možda uz malo dotjerivanja) Možete se prebaciti na PC (Windows, Linux ili MacOS), Android, PlayStation ili XBox! Da bismo to učinili, moramo preuzeti samo sam motor, koji, usput, "teži" više od gigabajta i potrebne SDK-ove (ako je razvoj planiran za mobilne platforme ili konzola). Ako želite napraviti igru ​​za Windows, onda ne morate ništa preuzimati, ali budući da ćemo napraviti igru ​​za Android, morat ćemo preuzeti i Android SDK (Software Development Kit). Savjetujem vam da preuzmete SDK u ZIP arhivi za veću udobnost rada s njim.

Kada se sve preuzme, možete se raspakirati u bilo koju Android SDK mapu koja vam odgovara, a zatim nastaviti s instaliranjem samog Unity3D-a. Instalira se kao i svaki obični Windows program, tako da ne bi trebalo biti problema s instalacijom. Nakon instalacije motor će se pokrenuti i prvo ćemo morati izraditi novi projekt:

Da bismo to učinili, morat ćemo zatvoriti sve prozore dobrodošlice i uvodne prozore, a zatim odabrati "Novi projekt" iz izbornika "Datoteka". U prozoru koji se otvori (pogledajte gornju snimku zaslona), od nas će se tražiti da odredimo mapu za spremanje projekta (njezin naziv će biti isti kao naziv projekta), uvezemo neke standardne skupove funkcija (ne trebaju nam) i odredimo način rada. Odaberite 2D kao način rada i kliknite gumb "Stvori". Ovime je završen pripremni dio posla :)

Sučelje motora i hijerarhija projekta

Nakon izrade projekta, on će se učitati u radni prostor Unity3D:

Sam radni prostor ima modularnu strukturu i sastoji se od nekoliko ugniježđenih prozora koji se mogu pomicati kako želite. Postavio sam ga ovako (s lijeva na desno i odozgo prema dolje):

  1. Hijerarhijski prozor - prikazuje hijerarhijski položaj aktivnih i neaktivnih objekata na sceni. Prema zadanim postavkama, jedini objekt koji se nalazi odmah na popisu je Glavna kamera.
  2. Prozor scene - prikazuje cijelu scenu igre i objekte na njoj (uključujući kamere, zvukove, teksture itd.).
  3. Prozor inspektora - prikazuje sva svojstva objekta odabranog u hijerarhiji ili na pozornici i omogućuje vam da ih uredite, nadopunite ili izbrišete.
  4. Prozor igre - prikazuje svijet igre koji je vidljiv kameri i omogućuje vam odabir veličine prozora za testiranje virtualne igre u pikselima. Također, omogućuje vam da aktivirate proširenje prozora igre u punoj veličini (Maksimiziraj na Play) i omogućite / onemogućite prikaz raznih informacija za programera.
  5. Prozori projekta i konzole. Prozor projekta koristi se za navigaciju kroz resurse projekta: učitane slike, zvukove, modele i tako dalje. Također pomoću ovog prozora (kontekstualni izbornik) možete kreirati nove prazne objekte igre različitih vrsta i skripti. Prozor konzole koristi se za prikaz poruka o pogreškama (crveno), upozorenja (žuto) i raznih informacija o otklanjanju pogrešaka koje tražite (sivo).
  6. Prozor Assets Label donji je dio prozora inspektora koji prikazuje pregled objekta ili datoteke odabrane u prozoru Projekta.

Uz sve navedeno, obratite pozornost na tri tipke u gornjem središnjem dijelu. Omogućuju vam da pokrenete svoj projekt, pauzirate ga (ponekad je korisno prilikom otklanjanja pogrešaka da biste vidjeli što se radi u hijerarhiji, na primjer) i, sukladno tome, isključite ga.

Napravit ćemo simulator glazbenog instrumenta: indijske narodne bubnjeve zvane "tabla", stoga ćemo za početak stvoriti dvije prazne mape u projektu u koje će biti pohranjeni zvukovi i slike. Novu mapu možete stvoriti pozivom kontekstnog izbornika u prozoru Project Navigator i odabirom stavke "Folder" s popisa "Create".

Ovdje vrijedi reći nekoliko riječi o tome kako te mape trebaju biti imenovane. Za jednostavnu igru, kao što je naš simulator, u principu, mape se mogu "imenovati" kako želite, međutim, postoje najmanje dva imena koja je bolje ne koristiti, jer ih je rezervirao motor. To su nazivi Resursi i Dodaci. U velikim projektima, mapa Resources se kreira odmah i svi "rezervni dijelovi" igre (slike, zvukovi, modeli, teksture i prefabs) su već pohranjeni u njoj (razvrstani po podmapama). U Plugins, kao što naziv implicira, pohranjuju se svi dodatni setovi funkcija trećih strana (tzv. "aktive" (assets)), kojih ima poprilično na Asset Storeu - trgovini za proširenja za Unity3D.

Uvoz datoteka i stvaranje objekata igre

Prije stvaranja novog projekt igre poželjno je unaprijed pripremiti sve datoteke potrebne za njegov rad. U našem slučaju, te datoteke su slike i zvukovi. Najlakši način da ih uvezete u projekt je da ih jednostavno povučete i ispustite u željenu mapu. Počnimo sa slikama...

Nakon što se slike pojave u našoj mapi Slike, potrebno ih je malo dotjerati:

Činjenica je da prema zadanim postavkama Unity3D sažima sve slike dodane projektu uz gubitak kvalitete. Ako nam takav gubitak nije potreban (osobito vrijedi za igre s HD grafikom), tada bismo trebali odabrati svaku sliku i u prozoru Inspector promijeniti vrijednost parametra "Format" iz "Compressed" u "Truecolor" u "Default" " kartica. Možda ćete morati promijeniti i parametar "Maksimalna veličina" ako je manji od stvarne širine slike (zadano je 1024 piksela). Nakon svih promjena, ne zaboravite kliknuti gumb "Primijeni" kako biste ih primijenili. Ako je potrebno, izvodimo slične radnje za sve ostale slike.

Kreirajmo sada objekte za igru ​​od naših slika. Da biste to učinili, jednostavno povucite željenu sliku u prozor Hijerarhije. Slika ili 3D model će se automatski pretvoriti u objekt igre i prikazati na početnoj koordinatnoj točki ispred kamere.

Prije svega, dodali smo pozadinsku sliku, koja bi trebala biti prikazana na cijelom ekranu. Možete provjeriti je li to tako tako da odaberete kameru u prozoru hijerarhije i pogledate kako je prikazan njen okvir. Na gornjoj snimci zaslona možete vidjeti da dio naše pozadine ostaje izvan pogleda kamere, tako da moramo prilagoditi veličinu ovog prikaza povlačenjem okvira izravno na pozornicu ili uređivanjem parametra "Veličina" u prozoru inspektora. U našem slučaju, morali smo promijeniti zadanu vrijednost (5) na 5.4.

To je to, kameru više ne diramo, već dodajemo i dotjerujemo ostale slike. Prilikom dodavanja vidimo da su neki od njih preveliki za našu igru. Možete ih smanjiti ili fizički u grafičkom uređivaču ili pomoću motora. Isprobajmo posljednju metodu. Da biste to učinili, odaberite sliku u prozoru Hijerarhija, au prozoru Inspektor promijenite vrijednosti "Skala" za X i Y koordinate od 1 do 0,5 (to jest, smanjite za pola). Na istom mjestu poželjno je, kako bi se izbjegla preklapanja, svim objektima igre (osim pozadine) dodijeliti redoslijed slojeva različit od nule (Order in Layer):

Posljednji korak u pripremi objekata igre sa slika bit će "vješanje" sudarača na njih. U Unity3D, sudarači se koriste kao detektori interakcije između objekata. To jest, zapravo, na našu sliku stavlja se virtualna školjka koja može registrirati dodire.

Da biste objektu dodali sudarač, odaberite ga u prozoru Hijerarhije, a zatim kliknite gumb "Dodaj komponentu" u prozoru Inspektora. Na popisu komponenti koji se pojavi tražimo Physics 2D (obična 3D fizika neće raditi u našem modu) i od svih opcija nam najviše odgovara "Circle Collider 2D". Njega biramo. Oko našeg objekta pojavit će se zelena linija koja prikazuje granice sudarača. Ostaje samo označiti potvrdni okvir "Is Trigger" tako da naš sudarač bilježi samo klikove i više ne komunicira s okolnim prostorom igre:

Slične radnje se ponavljaju za sve preostale objekte. Samo će se naša pozadina razlikovati od ostalih objekata. Za ovo ćemo primijeniti Box Collider 2D i postaviti položaj Z na veći od nule kako bismo gurnuli sudarač i samu pozadinu u pozadinu (ovo će nam trebati kasnije).

Rad sa zvukom

Sa zvukom u Unity 3D, na prvi pogled, sve je pomalo zbunjujuće. No, pokušajmo to shvatiti redom :)

Prije svega, moramo odvući sve zvukove u mapu Zvukovi i također ih malo dotjerati:

Ako je razina glasnoće svih vaših zvukova početno podešena, tada sve što trebate učiniti je isključiti 3D obradu zvuka. U 3D igrama ova je obrada potrebna kako bi se simulirao pristup izvora zvuka kada mu se kamera približi. Ali u 2D nam to ne treba, pa odabiremo svaki zvuk redom i poništavamo "3D zvuk" s njega.

Sada možemo početi dodavati zvukove objektima igre. Da bismo to učinili, moramo redom odabrati svaki gumb i dodati mu novu komponentu "Audio izvor" iz odjeljka "Audio". Kada je komponenta dodana, odaberite odgovarajući gumb "Audio Clip" i poništite potvrdni okvir "Play On Awake" aktivan prema zadanim postavkama (reprodukcija kada se pojavi):

Kada su svi zvukovi pričvršćeni na prave gumbe, vrijeme je za zabavni dio - skriptiranje...

Prva skripta

Prije nego počnemo analizirati našu prvu skriptu, vjerojatno je vrijedno reći nekoliko riječi o sustavu skriptiranja u samom Unity 3D.

Unity vam omogućuje pisanje koda na tri jezika odjednom: JavaScript (točnije, njegova malo modificirana verzija UnityScript), C # i Boo. U brojnim knjigama i vodičima možete pronaći mišljenje da je za početnike lakše svladati skriptiranje u Unityju koristeći JavaScript kao primjer. Međutim, ovaj jezik nije tako ugodan kao drugi, i u budućnosti ćete ga najvjerojatnije morati ponovno učiti. Stoga je bolje početi odmah s učenjem C # (Boo je također dobar, ali na njemu ima malo materijala za obuku).

Sada o tome gdje napisati kod. Zadani uređivač koda u Unity 3D je MonoDevelop IDE. Prednost ovog razvojnog okruženja je što ima savjete za brzi unos standardnih metoda, klasa i funkcija, kao i sustav provjere sintakse. Međutim, za mene je nedostatak bila glomaznost i veliki intenzitet resursa. Srećom, u postavkama Unityja možete postaviti bilo što kao uređivač teksta, pa sam za sebe "objesio" lagani i funkcionalni Notepad ++ (u njemu će biti prikazani gotovo svi primjeri).

I zadnji. Naravno, bez referentnih materijala u savladavanju svih zamršenosti motora, nećete ići daleko, pa evo popisa nekoliko razumnih internetskih izvora na temu Unity 3D:

  • http://docs.unity3d.com/ru/current/Manual/UnityManualRestructured.html - službeni priručnik za motor s djelomičnim prijevodom na ruski (pojavio se nedavno i ponekad je nestabilan);
  • http://docs.unity3d.com/ru/current/ScriptReference/index.html - službeni referentni priručnik za skriptiranje na engleskom jeziku;
  • http://unity3d.ru/distribution/index.php - ruski forum za Unity 3D programere;
  • http://habrahabr.ru/post/141362/ - niz lekcija o stvaranju trodimenzionalnih igara na Habrahabru;
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx - Microsoftova službena referenca za C# na ruskom.

Pa, kako ne bismo dugo razvlačili, predlažem da odmah stvorite prvu skriptu. Pod skriptama, ako ih ima mnogo, bolje je dodijeliti zasebnu mapu, ali naša igra će biti jednostavna, tako da možemo stvoriti skriptu izravno u korijenskoj mapi projekta. Da biste to učinili, pozovite kontekstni izbornik u prozoru projekta, odaberite popis Stvori i kliknite "C # skripta". Nazovimo našu novu skriptu, na primjer, Zvukovi i otvorimo je dvostrukim klikom. Nakon što smo uklonili standardne metode Update i Start, a zatim registrirali potrebne, dobivamo sljedeću skriptu:

Ako niste ponovno konfigurirali uređivač, tada će se naša skripta otvoriti u MonoDevelopu. Pogledajmo njegovu strukturu...

Zapravo, svaka C# skripta sastoji se od tri glavna dijela:

  1. Na samom vrhu navedene su biblioteke koje je potrebno povezati da bi skripta radila (npr. "using Unity.Engine" povezuje rad samog motora, a "using System.Collections" - biblioteka koja sadrži broj ugrađenih klasa za rad skripte pod različitim sustavima).
  2. Deklaracija klasa i varijabli. U C# ne postoji koncept skripte kao takve. Umjesto toga, koristi se koncept "klase", koji uključuje niz metoda i funkcija. Iako je, zapravo, u kontekstu Unity 3D, ovo je gotovo ista stvar :) Glavna stvar koju treba zapamtiti je da naziv klase mora odgovarati nazivu koji smo dali skripti. Osobitost varijabli u C# je da se moraju (osim privremenih, koje su deklarirane u samoj skripti) upisati. U praksi to znači da se za varijablu mora navesti razina pristupa (privatna ili javna) i tip (int, float, bool ili, kako imamo u skripti, AudioClip). U isto vrijeme, bilo koji naziv varijable može biti Ili mu možete odmah pripisati vrijednost.
  3. Skup metoda i funkcija. Metoda u C# je gotovo svaka funkcija koja izvodi određene radnje. U principu, u literaturi o Unity 3D-u nazivaju se funkcijama, ali ako govorimo o C# kao zasebnom programskom jeziku, onda su to ipak metode :). Čiste funkcije u Unityju su, na primjer, standardne funkcije za izlaz zvuka, crtanje GUI elemenata itd., koje se koriste unutar metoda.

Poznavajući sada strukturu skripte, lako je razumjeti njezino značenje, koje se svodi na sljedeće... U klasi (skripti) Zvukovi deklariramo 9 varijabli tipa AudioClip s imenima koja su nam potrebna za praktičnost razlikujući ih. Nužno ih činimo javnim (privatni neće biti prikazani u uređivaču, a morat ćemo "objesiti" zvukove na njih kroz uređivač). Zatim u tijelu skripte koristimo standardnu ​​metodu "void OnMouseDown ()". Prije je bio odgovoran samo za obradu klika mišem, ali u novim verzijama također se tumači kao dodir na dodirni zaslon. U njemu upisujemo uvjete po kojima provjeravamo nazive pritisnutih sudarača i, ako detektiramo pritisak jednog od njih, emitiramo odgovarajući zvuk (koristimo standardnu ​​audio.PlayOneShot(); funkciju).

Prilikom pisanja koda, pazite da uključite sve otvorene i zatvorene zagrade, inače ćete stalno dobivati ​​izvješća o pogreškama u konzoli i nećete moći uopće pokrenuti svoj projekt! Također obratite pozornost na upotrebu velikih slova u nazivima metoda i funkcija. Oni su također često uzrok grešaka. I, naravno, poštujte sve znakove (točke, dvotočke i zagrade), ukratko, sintaksu jezika. U početku će biti teško, ali s vremenom ćete početi pisati ispočetka bez grešaka!

Kada je skripta spremna, odaberite je i u prozoru Inspector dodijelite drugačiji zvuk svakoj varijabli. Sada samo moramo primijeniti našu skriptu na objekte u sceni. Najlakši način da to učinite jest povlačenjem skripte izravno na željeni objekt igre na popisu hijerarhije:

Ako je skripta ispravno povučena, trebala bi se pojaviti u prozoru Inspector pored objekta na koji smo je povukli. U skladu s tim, povlačimo skriptu na sve objekte koji bi trebali zvučati u igri i možemo je pokušati pokrenuti. Kada kliknete na naše gumbe za igru, sada će se konačno čuti određeni zvuk!

Uvod u GUI

U principu Igra kod nas već funkcionira, ali je nekako previše "ćelava". Nešto u njemu nedostaje ... Ili, barem, natpis s imenom koje je ispred nas! Drugim riječima, trebate implementirati neku vrstu razumljivog korisničkog sučelja.

Zapravo, GUI je skraćenica za engleski. "Grafičko korisničko sučelje", odnosno grafičko korisničko sučelje. Tradicionalno, uključuje takve komponente kao što su:

  • gumbi;
  • prozor;
  • tekstualna područja;
  • potvrdni okviri i/ili radio gumbi;
  • klizači (klizne trake) itd.

U Unity 3D je sve to (pa i nešto više od toga) u potpunosti prisutno. Glavna stvar je naučiti kako ga koristiti! Pogledajmo kako Unity GUI može napraviti jednostavan naslov.

Da biste to učinili, stvorite novu skriptu pod nazivom Sučelje i modificirajte je na sljedeći način:

Pažljivo razmotrite skriptu na snimci zaslona. Ovdje pišemo samo jednu javnu varijablu tipa GUIStyle, koja je za nas nova. Ova vrsta vam omogućuje vizualnu promjenu izgleda elemenata kojima je ovaj stil dodijeljen. Stilovi su korisni kada postoji mnogo elemenata sučelja iste vrste (na primjer, gumbi), ali bi trebali imati drugačiji izgled.

Zatim kreiramo gumb ("GUI.Button"), koji ima sljedeću sintaksu: uvjet - 4 koordinate (vodoravna uvlaka od lijevog ruba, okomita uvlaka od gornjeg ruba, širina, visina) - vidljiv tekst u navodnicima i dalje , izborno, oznaka stila. Unutar uvjeta gumba zapisane su potrebne funkcije. U našem slučaju registrirali smo prijelaz na stranicu programera ("Application.OpenURL("");").

GUI skripte mogu raditi iz bilo kojeg objekta igre, ali obično se savjetuje da ih "objese" na kameru, što ćemo učiniti povlačenjem skripte na objekt glavne kamere. Sada, ako ga odaberemo u prozoru Hijerarhija, tada ćemo u prozoru Inspektor moći vidjeti javnu varijablu našeg stila, proširenjem iste, dobit ćemo puni pristup postavkama ovog stila!

Možemo odrediti boju teksta i teksturu za pozadinu u bilo kojoj situaciji (za gumb morate registrirati njegove tri opcije (Normalno - normalan prikaz, Hover - pri lebdenju i Aktivno - pri kliku), postaviti ispunu i prilagoditi font. Prema zadanim postavkama, jedini dostupan font u Unity 3D je Arial, međutim, možete ručno učitati bilo koji drugi font u projekt i primijeniti ga u polju "Font", postavljajući sve povezane parametre.

Ono što je zanimljivo i ujedno ne baš zgodno je to što se GUI elementi ne prikazuju na pozornici dok ne započnemo projekt, tako da podešavanje parametara svakog elementa može potrajati dosta vremena. Pokrenimo projekt i vidimo kako će izgledati naš gore kreirani gumb:

Promjena sučelja uvjetom i statičkim varijablama

Već smo puno učinili, ali uvijek ima mjesta za napredak :) Stoga, predlažem, kao zadnji primjer, stvaranje prozora za pomoć, s kojim normalni programeri obično opskrbljuju svoje igre i aplikacije. Da biste to učinili, dodajte sliku za takav gumb u obliku upitnika u mapu sa slikama i od nje napravite objekt igre. Objesimo sudarač na njega i napišemo skriptu s imenom, na primjer, "Pomoć" sa sljedećim sadržajem:

U ovoj skripti imamo dvije varijable. Prva varijabla definira skin koji će se koristiti za sve elemente sučelja opisane u ovoj klasi. Za razliku od stilova, o kojima smo gore govorili, maske vam omogućuju promjenu izgleda ne samo pojedinačnog elementa kojem su dodijeljene, već i svih elemenata određene vrste odjednom. Osim toga, za razliku od stilova, maske se ne dodjeljuju elementima, već se deklariraju odmah za cijelu metodu i rade dok se ne deklarira druga maska. Također biste trebali zapamtiti da skinovi ne postoje samo kao varijable, već i kao zasebne datoteke. Stoga, prije deklariranja skina, morate ga odmah stvoriti u prozoru "Projekt" iz kontekstnog izbornika: "Stvori" - "GUI skin".

Druga varijabla koju imamo je logička (ili inače Booleova). Može imati samo dvije vrijednosti: "istinito" (true) ili "lažno" (false). Zbog svoje binarne prirode, takva varijabla je savršena za implementaciju svih vrsta prekidača. U našem slučaju, bit će odgovoran za prikaz teksta koji opisuje našu igru.

Međutim, ako bolje pogledate, primijetit ćete da posljednja varijabla ima jedan prekrasan parametar - "statičnost". Dodavanje ovog parametra varijablama omogućuje vam da ih učinite statičnima i pristupite im iz drugih skripti!

Ali vratimo se na ostatak koda. Metoda "void OnMouseDown()" koja nam je ovdje već poznata poslužit će kao prekidač za varijablu "isVisible" pomoću jednostavnog uvjeta. Međutim, nakon uvjeta postoji još jedna funkcija. Ova funkcija ("Debug.Log();") služi za ispisivanje "u hodu" u Konzolu vrijednosti varijabli koje su nam potrebne (unosimo ih bez navodnika u zagradama). Kao što vidite, unutar funkcije možete kombinirati i nepromjenjivi tekst (napisan pod navodnicima) i varijable (bez navodnika). Glavna stvar je da između svih podataka treba biti znak "+".

Dalje u tekstu skripte imamo metodu za crtanje sučelja ("void OnGUI()()"), unutar kojeg vidimo deklaraciju novog skina ("GUI.skin = HelpSkin;") i novog element sučelja tipa GUI.Box. Za razliku od gumba, okvir je neaktivan element i obično služi za prikaz raznih tekstualnih ili grafičkih podataka.

Obratite pozornost na to kako postavljamo položaj kutije. Ovdje se sve vrijednosti ne određuju izravno, već uz pomoć matematičkih izraza, što je zapravo analog "fluidnog izgleda" u web razvoju. Problem je u tome što se prilikom određivanja točnih veličina GUI elemenata na različitim razlučivostima zaslona, ​​oni neće prilagoditi i mogu biti ili premali ili, obrnuto, veliki. U sljedećoj verziji motora, programeri obećavaju da će GUI učiniti prilagodljivim, ali za sada moramo izopačiti :(

Posljednji korak na putu do uspjeha bit će prilagođavanje naše kože. Određujemo datoteku skina u varijabli skripte, a zatim odabiremo ovu datoteku u prozoru projekta. Kao i kod drugih datoteka, postavke maske bit će prikazane u prozoru inspektora. Ovdje tražimo element koji je podložan promjenama (u našem slučaju Box), otvorimo ga i postavimo na isti način kao što je gore opisan stil:

Da vidimo radi li naša skripta ispravno, pokrenimo projekt i pokušajmo kliknuti gumb za pomoć:

Sada sve radi, ali nije uvijek zgodno pritisnuti gumb za pomoć da biste sakrili opis. Uobičajenije je ubaciti bilo kakve obavijesti u bilo koju slobodno mjesto nego ciljati na gumbe. I ovdje samo trebamo iskoristiti činjenicu da smo varijablu "isVisible" učinili statičnom, kao i sudarač obješen na pozadinsku sliku...

Vratimo se našoj prvoj skripti ("Zvukovi"), koja prati pritiske gumba za reprodukciju zvukova. Bit će dovoljno da u njega upišemo samo jedan redak (točnije unutar metode "void OnMouseDown ()":

if (this.name != "HelpButton")(Help.isVisible = false;)

Ovom linijom postavljamo uvjet: ako naziv pritisnutog sudarača nije jednak nazivu gumba za pomoć, tada će varijabla "isVisible" u skripti "Pomoć" biti jednaka "false". Samo je potrebno da varijabla "isVisible" definitivno ima postscript "static", inače ćemo dobiti grešku.

Sada, pri pokretanju, vidjet ćemo da je naš prozor za pomoć zatvoren kada ne samo kliknemo na gumb u gornjem desnom kutu, već i kada dodirnemo bilo koji slobodni dio ekrana. Jedina stvar koja se može poboljšati je da se prozor sakrije kada kliknete na njega... To će biti vaša "domaća zadaća";) Mogu samo reći da će GUI okvir trebati promijeniti u gumb sličnog dizajna, opet , s postavkom kože i propisivanjem funkcije koja mijenja varijablu "isVisible". Sve, šuti :)

Sastavljanje igre i spremanje projekta

Napokon nam sve radi! To znači da je vrijeme da spremimo našu igru ​​i testiramo je na stvarnom uređaju. A za to ga je potrebno kompajlirati u izvršnu datoteku (za Windows, na primjer, u EXE, a za Android, u APK).

Ako želite kompajlirati igru ​​za PC, onda ne morate raditi nikakve preliminarne postavke. Međutim, za Android ćete prvo morati spojiti Android SDK koji smo preuzeli na samom početku. To se radi vrlo jednostavno: idite na izbornik "Uredi", pozovite stavku "Preferences" i u prozoru koji se otvori idite na karticu "Vanjski alati". Ovdje tražimo redak "Android SDK Location" i u njemu označavamo put do neraspakirane arhive sa SDK-om (pogledajte snimku zaslona u nastavku). Usput, ovdje također možete promijeniti monstruozni MonoDevelop uređivač teksta aktivan prema zadanim postavkama u vaš omiljeni :)

A sada je došao trenutak istine! Idite na izbornik "Datoteka" i tamo potražite stavku "Postavke izrade". U prozoru koji se otvori morat ćemo odmah dodati scene za sklop. Ako postoji samo jedna scena (kao u našem projektu), tada će biti dovoljno kliknuti gumb "Dodaj trenutnu". Ako ih ima više, morat ćete svaku od njih otvoriti i na isti način dodati na popis scena, a zatim povlačenjem i ispuštanjem namjestiti željeni redoslijed:

Sljedeći korak je odabrati platformu za izradu (planiramo igru ​​za Android, što znači da je biramo) i kliknuti gumb "Postavke igrača" u nastavku. Prozor Inspector otvorit će niz postavki, od kojih su neke obavezne ili vrlo poželjne. Poželjno je navesti nazive razvojne tvrtke, programa i njegove ikone (ime tvrtke, naziv proizvoda i zadana ikona) na vrhu popisa postavki.

Pri dnu, u odjeljku "Ostale postavke", postoje dva potrebna parametra: "Identifikator skupa" i "Verzija paketa". Zadana verzija postavljena je na 1.0, ali identifikator će se morati izraditi ručno i, po mogućnosti, jedinstven. Trebala bi se sastojati od tri dijela, međusobno odvojena točkama: rezervirana riječ "com", zatim naziv tvrtke programera i na kraju naziv same aplikacije.

Ostatak postavki sklopa možete promijeniti po vlastitom nahođenju ili ih uopće ne mijenjati. Glavno je da će sada kompilacija već moći krenuti. Da biste to učinili, samo kliknite gumb "Build" u prozoru "Build Settings" i pričekajte dok nam program ne da gotovu aplikaciju upakiranu u APK datoteku :)

Zaključak

Ovo zaključuje naš pregled lekcije o stvaranju najjednostavnijih aplikacija za Android. Kako biste mogli ponoviti sve o čemu smo pričali, na kraju članka dat ću poveznicu na arhivu, koja će pohraniti sve resurse igre kao zasebnu mapu (ako želite sve raditi ispočetka) i kao datoteka s ekstenzijom unitypackage. Potonji vam omogućuje uvoz cijelog projekta u Unity odjednom, uključujući ovisnosti itd.

Da biste uvezli naš projekt (i, usput, sve dodatke preuzete s interneta ili Assets Store-a), trebate otići na izbornik "Assets", odabrati stavku "Import Package", au njoj "Custom Packege", zatim odredite put do naše datoteke i pritisnite gumb "Uvezi". Usput, možete napraviti punu sigurnosnu kopiju svog projekta, spremajući ga u takav unitypackage, iz istog izbornika ("Sredstva") klikom na stavku "Izvozni paket".

Čini se da sve :) Kao osoba koja je sama savladala Unity 3D od nule, u članku sam pokušala odgovoriti na najveći broj pitanja i istaknuti glavne nijanse rada s motorom koji se pojavljuju na početku. Ali, možda, to neće biti dovoljno za nekoga, stoga, ako imate bilo kakvih pitanja, možete me kontaktirati ili izravno poštom ili na forumu: pomoći ću vam kako god mogu!

Želim vam svima puno sreće i uspješnu realizaciju svih projekata!

p.s. Dopušteno je slobodno kopirati i citirati ovaj članak, pod uvjetom da je navedena otvorena aktivna poveznica na izvor i očuvanje autorstva Ruslana Tertyshnyja.