Ustvarjanje 3d igre za android unity. Ustvarjanje igre na Androidu. Kaj je oblikovalec iger

Razvijanje iger za naprave z operacijskim sistemom Android zahteva podoben pristop kot razvijanje za iOS. Po drugi strani pa strojna oprema naprav Android ni podvržena jasnim standardom, zaradi česar je treba rešiti težave, ki jih pri delu z iOS ni. Obstajajo tudi razlike med različicama Unity za Android in iOS.

Priprava razvojnega okolja za Android

Preden lahko preizkusite svoje igre na napravi, boste morali pripraviti svoje razvojno okolje. Zlasti prenesite in namestite Android SDK za želeno platformo in dodajte svojo napravo v sistem (ta postopek je drugačen za Windows in Mac). To je podrobno napisano na spletnem mestu Android Developers, kot tudi Dodatne informacije lahko zagotovi proizvajalec vaše naprave. Ker je to precej zapleten postopek, smo pripravili majhno navodilo, ki vam bo pomagalo pripraviti vse, kar potrebujete za razvoj. Če potrebujete več informacij, jih lahko dobite na portalu za razvijalce za Android.

Dostop do funkcij Androida

Unity ponuja API za dostop do vnosa in nastavitev za Android. Razpoložljivi razredi so dokumentirani na strani Code for Android Assemblies.

Povezovanje kode C, C++ ali Java s skripti

Unity vam omogoča klicanje funkcij, napisanih v C/C++, neposredno iz skriptov (funkcije Java lahko kličete posredno). Če želite izvedeti, kako dostopati do funkcij iz izvorne kode iz Unity, obiščite stran za izdelavo vtičnikov za Android.

Izločanje okluzije (izrezovanje nevidne geometrije)

Unity zagotavlja podporo za izločanje okluzije, kar je zelo uporabno pri optimizaciji za mobilne platforme. Več informacij najdete na strani Occlusion culling.

Prilagajanje zagonskega zaslona

Začetni zaslon, ki se prikaže ob začetku igre, je mogoče prilagoditi – za več informacij glejte to stran.

Odpravljanje težav in poročanje o napakah

Obstaja veliko razlogov, zakaj se vaša aplikacija zruši ali ne deluje pravilno. Naš vodnik za reševanje težav, specifičnih za Android, vam bo pomagal odpraviti vzroke napak v najkrajšem možnem času. Če po branju priročnika domnevate, da je težava v Unityju, morate vložiti poročilo o napaki. Za navodila glejte to stran.

Kako se Unity za Android razlikuje od namizne različice

JavaScript z močnim tipkanjem

Za izboljšanje zmogljivosti v različici Unity za Android je dinamično tipkanje v JavaScriptu vedno onemogočeno (kot da bi se #pragma strict samodejno uporabila za vsak skript). To si je pomembno zapomniti, če projekt v Android prenašate s starejših platform in če naletite na napake pri prevajanju, je treba težavo najprej iskati pri tipkanju. Takšne napake je običajno enostavno odpraviti tako, da zagotovite, da so tipi vseh spremenljivk med inicializacijo eksplicitno podani ali pretvorjeni.

Medtem ko Unity Android podpira teksture DXT/PVRTC/ATC, bo Unity med izvajanjem razpakral teksture v format RGB(A), če ti načini stiskanja niso podprti v določeni napravi. To lahko resno vpliva na zmogljivost upodabljanja GPE, zato je priporočljiva uporaba formata ETC. To je de facto standard za Android in bi ga morale podpirati vse sodobne naprave. Po drugi strani pa ETC ne podpira kanala alfa in včasih bodo 16-bitne teksture RGBA najboljša izbira glede kakovosti, velikosti in hitrosti upodabljanja, kjer je potreben kanal alfa.

Unity 3D bo nepogrešljivo orodje za tiste, ki profesionalno pristopijo k ustvarjanju visokokakovostnega materiala. Aplikacija vključuje že pripravljene modele, skripte in teksture, ki jih lahko dopolnite z lastno vsebino - slikami, zvoki in videoposnetki.

Končni izdelki, ustvarjeni v Unity 3D, so združljivi s skoraj vsemi priljubljenimi platformami - od Mobilni telefoni in konča s SMART TV-ji.

Lastnosti programa:

  • učni mehanizem Unity;
  • prilagodljiv večnamenski urejevalnik;
  • visoka hitrost prevajanja;
  • vmesnik, enostaven za učenje;
  • združljivost z velikim številom platform.

Načelo delovanja

Za uporabo programa morate prenesti platformo Unity Hub, prek nje pa lahko preizkusite funkcije brezplačne različice Personal. Na voljo je z obsegom monetizacije do 100 tisoč dolarjev letno.

Poleg brezplačne različice se lahko naročite še na dve napredni različici:

Unity Plus (~25 $ mesečno) - omogoča omejen dostop do storitve Customer Success Advisor, zbira informacije o napakah na uporabniških napravah, spremlja povratne informacije.

Unity Pro (~125 $ mesečno) je najvišja možnost naročnine. Zagotavlja podporo profesionalnih razvijalcev, omogoča prednostni dostop do podpore ustvarjalcev programa, vključuje izboljšane zmogljivosti za spremljanje učinkovitosti in zbiranje statističnih podatkov.

Gradnja vseh dejanja igre temelji na dovolj kakovostnem fizičnem jedru programa (PhysX), od katerega je odvisno obnašanje modelov. Zahvaljujoč možnosti uvoza tekstur in predmetov lahko naredite izdelek edinstven ali uporabite orodja, ki jih je vključil razvijalec. Pomembno je razumeti, da je vsak predmet, ustvarjen v tem konstruktorju, določen niz skriptov in dogodkov, ki jih lahko nadzorujete sami.

Za profesionalno delo z Unity 3D potrebujete nekaj časa, da se seznanite z vmesnikom in funkcijami aplikacije. Če želite to narediti, lahko najdete veliko videoposnetkov na internetu ali obiščete specializirane tečaje, ki potekajo v številnih velikih mestih.

Upoštevati je treba, da morate za delo s 3D grafiko imeti sodoben računalnik s strojno video kartico.

Prednosti:

  • skoraj neomejena funkcionalnost za ustvarjanje projektov;
  • podpora za 3D grafiko v brskalniku;
  • kompatibilen z igralne konzole in sodobnih televizorjev;
  • veliko število orodij za vizualizacijo;
  • obstaja brezplačna različica.

Minuse:

  • za ustvarjanje kakovostnega izdelka je potrebno specifično znanje;
  • ni možnosti zelo fine nastavitve fizičnega jedra programa;
  • ni prevoda vmesnika v ruščino.

Unity 3D lahko prenesete ne le za pripravo tekmeca priljubljeni spletni igrači Juggernaut (ki je prav tako narisana z orodji junaka našega pregleda), ampak tudi za ustvarjanje elegantnih 3D predstavitev. Naj traja malo dlje, a wow učinek za občinstvo je zagotovljen.

Če se želite seznaniti z zmogljivostmi platforme, samo prenesite brezplačna različica Unity 3D. Če potrebujete dostop do izvorne kode, poiščite plačljive različice.

Analogi:

  • urejevalnik iger - brezplačna aplikacija ustvarjanje iger;
  • Construct 2 je priljubljen konstruktor iger s preprostim vmesnikom.
  • Construct 2 je zmogljiv program za ustvarjanje 2D projektov.

Pozdravljeni vsi skupaj! Ker sem se naučil izdelovati igre na tem motorju, vas želim naučiti isto. Najprej potrebujemo sam Unity3d, poljuben urejevalnik 3D modelov in ravne roke, ki rastejo iz ramen.

1. Učenje programa

Za začetek priporočam namestitev Monodevelop! Razumejmo, kaj je enotnost. Unity je okolje za razvoj iger na več platformah. Prav zaradi njegove enostavnosti in razumljivosti je vsak tretji vsaj enkrat izdelal igre na njem.

Oglejte si zgornji posnetek zaslona:

  • Oder je vaš ustvarjalni peskovnik.
  • Projekt - tukaj so vse animacije in modeli, zvoki in teksture.
  • Za namestitev modelov v zgornji orodni vrstici izberite Sredstva-Uvozi novo sredstvo. Lahko tudi Assets-Import Package-Custom Package. V drugem primeru mora biti paket v končnici .unity.
  • Hierarhija - vsi objekti v sceni. Tam ustvarite starše za predmet. Samo premaknite predmet na drugega v hierarhičnem meniju in priložen bo. Rezultat bo nekakšna mapa.
  • Orodna vrstica - seznam orodij. Tam lahko omogočite 2D, 3D način.
  • Inspector - funkcija predmeta, kjer dodajate animacije, skripte in drugo. Tam lahko uporabite orodja: premaknite kamero, premaknite predmet, raztegnite, zavrtite predmet.


Zdaj vidite meni predmeta, v njem lahko dodate animacijo, skripte in drugo.

Mislim, da s tem jedilnikom ne boste imeli težav.
Kliknite, da ustvarite poljuben predmet.

Na splošno smo preučili program, kmalu bo mogoče pisati svoje igre.

2. Ustvarite preprosto igro

Najprej ustvarimo ozemlje Create-Terrain. Dodajte travo in drevesa. S klikom na podlago na desni se prikaže okno, izberite drevesa, travo.


Ustvarite tudi gore in izbokline. Nato naložite paket krmilnika Characher v projekt. Nato poiščemo v oknu s projektom krmilnika Standard Asses-Characters in izberemo prvoosebni pogled (kapsula) ali tretjeosebni pogled (mehanik).
Če je prva oseba, jo preprosto položite na tla. Če iz tretjega, potem morate prenesti animacijo. Priporočam tudi, da osvetlitev scene nastavite na Create-Directional Light.


Če želite dodati glasbo, jo povlecite na želeni element.
Igra je pripravljena, ampak kako jo sestaviti?

Če želite to narediti, pojdite na File-Build settings-player settings (za oznako in ime). Izberite platformo in končali ste. Če želite to narediti, morate namestiti Android SDK. Toda tam morate določiti mapo s SDK in ne potrebujete samo SDK, ampak API želene ravni (na primer Android 4.2 ima API 17). Na primer, če želite, da igra deluje v sistemu Android 4.0+, morate namestiti te API-je.

V naslednjem članku vam bom povedal, kako nastaviti kontrolnike za Android ali iOS in se naučil, kako sami napisati skripte.

Razvoj mobilne aplikacije je eden najbolj donosnih poklicev v računalniški industriji. Ustvarjanje igre za Android stane na stotine ali tisoče dolarjev, dobiček pa lahko doseže tudi milijon dolarjev. V zvezi s tem se veliko ljudi zanima za razvoj aplikacij za telefon. V tem članku se boste naučili, kako ustvariti igro za Android iz nič z računalnikom, kateri motor in oblikovalec je bolje izbrati.

Noben uspešna igra ne more brez lepa grafika Zato je ustvarjanje dizajna ena najpomembnejših stopenj razvoja. Zasnova v operacijskem sistemu Android se izvaja z uporabo "projektnega dokumenta" ali oblikovalskega dokumenta. Morate začeti ustvarjati igračo z njeno podrobno študijo. Datoteka vsebuje:

  1. Objektni modeli;
  2. Funkcionalne specifikacije;
  3. Vsebina igre;
  4. Vmesnik.

Razmislimo o vsaki od točk podrobneje.

Objektni modeli

To so informacije o funkcionalnosti posameznega elementa. Objektni modeli so odgovorni za možnost nakupa in prodaje predmetov ter za izboljšanje igralnih lastnosti likov.

Funkcionalne specifikacije

Opisuje igranje, glavne značilnosti vsakega lika. Tukaj je tudi opis značilnosti igralnih predmetov - orožja, kompletov prve pomoči, oklepov in drugih. V bistvu so funkcionalne specifikacije pravila, po katerih proces igre. Bolje ko je ta del razdelan, lažje bo ustvariti visokokakovostno igro za Android.

Vsebina igre

To je besedilno polnjenje igre. Opisuje dialoge likov in katera orožja je mogoče uporabiti za škodo, koliko zdravja bo vzel udarec, katere lastnosti se bodo povečale pri uporabi različne opreme. Vsebuje tudi natančen opis vsak predmet.

Vmesnik

Vmesnik je način interakcije uporabnika z igro. Vključuje gumbe, s katerimi lahko upravljate lik, in odseke menija: na primer predvajanje, rezultat, nastavitve, najboljši igralci, pomoč. Če nimate izkušenj z ustvarjanjem aplikacij za Android, preden ustvarite svoje, prenesite s Play Market in analizirajte priljubljene igre in prenesite najboljše rešitve v svoj projekt.

Igralni motor

Jedro vsake igre je motor. To je programska oprema, ki vam omogoča razvoj in izvajanje. Vsebuje celo vrsto programov, vključno z motorjem za upodabljanje, fizikalnim motorjem, zvokom, animacijo in še mnogo več. Da bi olajšali postopek pisanja programov, razvijalci tretjih oseb ustvarijo lastne igralne motorje posebej za aplikacije Android.

Vsak od njih ponuja različne funkcije: nekateri so zasnovani za 3D, drugi za 2D, podprta je lahko več platform. Takšnih motorjev je ogromno, a če ste začetnik, je bolje izbrati enega najbolj priljubljenih, saj bodo tam prisotne vse potrebne funkcije.

UDK

Navor 2d/3d

Kaj je oblikovalec iger?

Constructor je program, ki združuje igralni mehanizem in integrirano razvojno okolje. Konstruktor naredi razvojni proces dostopen ljudem, ki nimajo znanja programiranja. Nekateri oblikovalci vam omogočajo ustvarjanje iger določenih žanrov, drugi imajo največjo funkcionalnost, vendar stanejo veliko več denarja. Za ustvarjalca začetnika mobilnih aplikacij je izbira oblikovalca eden najpomembnejših trenutkov, saj bo od njegovih zmogljivosti odvisna usoda prihodnje aplikacije.

Konstruktor vam omogoča ustvarjanje iger različnih žanrov za Windows, Android in iOS. Ponudbe velika izbiraže pripravljene lokacije, predmete, like in zvočno zasnovo, tako da ustvarjanje prve igre Android ne bo vzelo veliko časa. Uporabniki, ki poznajo programska jezika JS in C++, lahko uporabljajo vdelani GML. Edina pomanjkljivost je, da program ni preveden v ruščino.

Zaključek

Ustvarjanje igre za Android ni enostaven, a zelo donosen posel. Če se odločite razviti igro in z njo zaslužiti, najprej razdelajte idejo. Nato napišite "dokument o oblikovanju" in se odločite za motor igre, ki lahko poveča svoj potencial. Po tem lahko nadaljujete neposredno z ustvarjanjem aplikacije v konstruktorju.

Video

Če želite izvedeti več o procesu ustvarjanja iger za Android, si oglejte serijo videoposnetkov, posvečenih tej dejavnosti.

Kako hitro in relativno enostavno ustvariti preprosto igro ali aplikacijo za Android? O tem si preberite v spodnjem članku, ki obravnava delo z motorjem Unity3D.

Ali igrate računalniške igre? Če je tako, potem ste zagotovo v procesu prehajanja naslednje uspešnice igre včasih imeli misli, kot so: "Ampak tukaj bi naredil narobe!". Ali želite tudi sami biti razvijalec? Potem pa vam ponujam majhno, a zelo zabavno "pustolovščino";)

Kaj je motor in zakaj je potreben?

Prej, v času prvih računalnikov, so bile igre in programi ustvarjeni po tako imenovani "hardcore" metodi. To pomeni, da je bil za popoln razvoj potreben dokaj izkušen programer, ki temeljito pozna svoj programski jezik in zna napisati skoraj celotno igro (vključno s slikovnimi pikami in posebnimi učinki!) V preprosti beležnici. Takih ljudi je bilo malo in so bili zelo cenjeni (in so še cenjeni) ...

Danes se je prag za vstop v temo programiranja močno znižal. In to olajša ne le razpoložljivost literature in vseh vrst gradiva za usposabljanje, temveč tudi vse bolj poenostavljen razvojni proces. Dandanes je redko srečati prave "hardcore" ljudi, saj so se pojavila precej priročna razvojna okolja, ki se imenujejo "motorji".

Bistvo mehanizma je, da vam omogoča uvoz vseh potrebnih predmetov igre v poenostavljenem vizualnem načinu, njihovo razporeditev na virtualnem odru in konfiguracijo vseh njihovih parametrov. To pomeni, da je naloga programerja le pravilno napisati logiko igre!

Vendar pa morate za udobje dela plačati z rahlim povečanjem velikosti projekta (včasih celo večkrat!) V primerjavi s svojim kolegom, napisanim na stari "hardcore" način. Zaradi tega nekateri razvijalci ne marajo motorjev ali poskušajo napisati svoje, v katerih se uporabljajo samo komponente, ki jih potrebujejo ...

Ampak ti in jaz sva daleč od pravih programerjev :) Zato ustvarimo preprosto igro za Android, ki temelji na priljubljenem in zmogljivem motorju Unity3D.

Začetek dela s projektom v Unity3D

Torej, zakaj smo se odločili za uporabo Unity3D:

  • možnost ustvarjanja polnopravnih 2D in 3D iger;
  • možnost sestavljanja končane igre za katero koli napravo;
  • relativno enostavno upravljanje motorja;
  • dobra razširljivost funkcionalnosti s povezovanjem vtičnikov;
  • relativno majhna velikost končnega sklopa igre (v primerjavi z drugimi motorji).

Glavni adut Unity3D je seveda njegova vsestranskost in multiplatformnost. Končana igra(morda z malo prilagajanja) Prenesete ga lahko na osebni računalnik (Windows, Linux ali MacOS), Android, PlayStation ali XBox! Če želite to narediti, moramo prenesti samo sam motor, ki mimogrede "tehta" več kot gigabajt in potrebne SDK-je (če je razvoj načrtovan za mobilne platforme ali konzola). Če želite narediti igro za Windows, vam ni treba ničesar prenesti, ker pa bomo naredili igro za Android, bomo morali prenesti tudi Android SDK (Software Development Kit). Svetujem vam, da prenesete SDK v arhiv ZIP za večje udobje pri delu z njim.

Ko je vse preneseno, lahko razpakirate v katero koli mapo Android SDK, ki vam ustreza, in nato nadaljujete z namestitvijo samega Unity3D. Namešča se kot vsak običajni Windows program, zato z namestitvijo ne bi smelo biti težav. Po namestitvi se bo motor zagnal in najprej bomo morali ustvariti nov projekt:

Za to bomo morali zapreti vsa pozdravna in uvodna okna, nato pa v meniju »Datoteka« izbrati »Nov projekt«. V oknu, ki se odpre (glejte zgornji posnetek zaslona), bomo pozvani, da določimo mapo za shranjevanje projekta (njeno ime bo enako imenu projekta), uvozimo nekaj standardnih naborov funkcij (ne potrebujemo jih) in določimo način delovanja. Izberite 2D kot način in kliknite gumb "Ustvari". S tem je pripravljalni del zaključen :)

Vmesnik motorja in hierarhija projekta

Ko ustvarite projekt, bo naložen v delovni prostor Unity3D:

Sam delovni prostor ima modularno strukturo in je sestavljen iz več ugnezdenih oken, ki jih je mogoče poljubno premikati. Nastavljeno imam takole (od leve proti desni in zgoraj navzdol):

  1. Hierarhično okno - prikazuje hierarhični položaj aktivnih in neaktivnih objektov na sceni. Privzeto je edini predmet, ki je takoj na seznamu, glavna kamera.
  2. Okno prizora - prikazuje celotno prizorišče igre in predmete na njem (vključno s kamerami, zvoki, teksturami itd.).
  3. Okno inšpektorja - prikaže vse lastnosti predmeta, izbranega v hierarhiji ali na odru, in vam omogoča, da jih urejate, dopolnjujete ali brišete.
  4. Okno igre - prikaže svet igre, ki je viden kameri, in vam omogoča, da izberete velikost okna testa virtualne igre v slikovnih pikah. Prav tako vam omogoča, da aktivirate razširitev okna igre v polni velikosti (Maximize on Play) in omogočite / onemogočite prikaz različnih informacij za razvijalca.
  5. Projektna in konzolna okna. Okno Projekt se uporablja za krmarjenje po virih projekta: naloženih slikah, zvokih, modelih itd. Tudi s pomočjo tega okna (kontekstnega menija) lahko ustvarite nove prazne predmete igre različnih vrst in skriptov. Okno konzole se uporablja za prikaz sporočil o napakah (rdeče), opozoril (rumeno) in različnih informacij o odpravljanju napak, ki jih zahtevate (sivo).
  6. Okno Oznaka sredstev je spodnji del okna inšpektorja, ki prikazuje predogled predmeta ali datoteke, izbrane v oknu Projekt.

Poleg vsega naštetega bodite pozorni na tri gumbe zgoraj na sredini. Omogočajo vam, da začnete svoj projekt, ga začasno ustavite (včasih je uporabno pri odpravljanju napak, da na primer vidite, kaj se dela v hierarhiji) in ga ustrezno izklopite.

Ustvarili bomo simulator glasbila: indijske ljudske bobne, imenovane "tabla", zato bomo za začetek v projektu ustvarili dve prazni mapi, v katerih bodo shranjeni zvoki in slike. Novo mapo lahko ustvarite tako, da pokličete kontekstni meni v oknu Project Navigator in na seznamu »Ustvari« izberete element »Mapa«.

Tukaj je vredno povedati nekaj besed o tem, kako naj bodo te mape poimenovane. Za preprosto igro, kot je naš simulator, je načeloma mogoče mape "poimenovati", kot želite, vendar obstajata vsaj dve imeni, ki ju je bolje ne uporabiti, saj ju rezervira motor. To sta imeni Viri in Vtičniki. Pri velikih projektih se mapa Resources ustvari takoj in vsi "rezervni deli" igre (slike, zvoki, modeli, teksture in prefabi) so že shranjeni v njej (razvrščeni po podmapah). V Plugins, kot že ime pove, so shranjeni vsi dodatni nabori funkcij tretjih oseb (tako imenovani "assets" (assets)), ki jih je kar nekaj na Asset Store - trgovini za razširitve za Unity3D.

Uvažanje datotek in ustvarjanje predmetov igre

Pred ustvarjanjem novega projekt igre zaželeno je, da vnaprej pripravite vse datoteke, potrebne za njegovo delovanje. V našem primeru so te datoteke slike in zvoki. Najlažji način, da jih uvozite v projekt, je, da jih preprosto povlečete in spustite v želeno mapo. Začnimo s slikami...

Ko se slike prikažejo v naši mapi Slike, jih je treba nekoliko spremeniti:

Dejstvo je, da Unity3D privzeto stisne vse slike, dodane projektu, z izgubo kakovosti. Če takšne izgube ne potrebujemo (še posebej velja za igre z grafiko HD), potem moramo izbrati vsako sliko in v oknu Inspector spremeniti vrednost parametra "Format" iz "Compressed" v "Truecolor" v "Default" " zavihek. Morda boste morali spremeniti tudi parameter »Največja velikost«, če je manjši od dejanske širine slike (privzeto je 1024 slikovnih pik). Po vseh spremembah ne pozabite klikniti gumba »Uporabi«, da jih uporabite. Po potrebi izvedemo podobna dejanja za vse druge slike.

Sedaj pa ustvarimo igralne predmete iz naših slik. Če želite to narediti, preprosto povlecite želeno sliko v okno Hierarhija. Slika ali 3D model bo samodejno pretvorjen v igralni objekt in prikazan na začetni koordinatni točki pred kamero.

Najprej smo dodali sliko za ozadje, ki naj bi bila prikazana na celotnem zaslonu. Ali je temu tako, lahko preverite tako, da v hierarhičnem oknu izberete kamero in pogledate, kako je prikazan njen okvir. Na zgornjem posnetku zaslona lahko vidite, da del našega ozadja ostaja zunaj pogleda kamere, zato moramo prilagoditi velikost tega pogleda tako, da povlečemo okvir neposredno na oder ali z urejanjem parametra »Velikost« v oknu inšpektorja. V našem primeru smo morali spremeniti privzeto vrednost (5) na 5,4.

To je to, fotoaparata se ne dotikamo več, ampak dodajamo in prilagajamo ostale slike. Pri dodajanju vidimo, da so nekateri preveliki za našo igro. Lahko jih zmanjšate fizično v grafičnem urejevalniku ali s pomočjo motorja. Poskusimo zadnjo metodo. Če želite to narediti, izberite sliko v oknu Hierarchy in v oknu Inspector spremenite vrednosti »Scale« za koordinate X in Y od 1 do 0,5 (to je, zmanjšajte za polovico). Na istem mestu je zaželeno, da se izognete prekrivanju, vsem predmetom igre (razen ozadja) dodelite neničelni vrstni red plasti (Vrstni red v plasti):

Zadnji korak pri pripravi igralnih predmetov iz slik bo "obešanje" trkalnikov nanje. V Unity3D se trkalniki uporabljajo kot detektorji interakcij med objekti. To pomeni, da je na našo sliko dejansko postavljena navidezna lupina, ki lahko registrira dotike nanjo.

Če želite predmetu dodati trkalnik, ga izberite v oknu hierarhije in nato v oknu inšpektorja kliknite gumb »Dodaj komponento«. Na seznamu komponent, ki se prikaže, iščemo Physics 2D (navadna 3D fizika v našem načinu ne bo delovala) in od vseh možnosti je za nas najprimernejša "Circle Collider 2D". Izberemo ga. Okoli našega predmeta se bo pojavila zelena črta, ki prikazuje meje trkalnika. Ostaja le, da potrdite potrditveno polje »Je sprožilec«, tako da naš trkalnik registrira samo klike in ne vpliva več na okoliški prostor igre:

Podobna dejanja se ponovijo za vse preostale predmete. Samo naše ozadje se bo razlikovalo od drugih predmetov. Za to bomo uporabili Box Collider 2D in nastavili položaj Z na večjo od nič, da potisnemo trkalnik in samo ozadje v ozadje (to bomo potrebovali pozneje).

Delo z zvokom

Z zvokom v Unity 3D je na prvi pogled vse nekoliko zmedeno. Ampak, poskusimo ugotoviti po vrsti :)

Najprej moramo vse zvoke povleči v mapo Zvoki in jih tudi malo prilagoditi:

Če je raven glasnosti vseh vaših zvokov na začetku prilagojena, potem morate samo izklopiti 3D obdelavo zvoka. V 3D igrah je ta obdelava potrebna za simulacijo približevanja vira zvoka, ko se mu kamera približa. Toda v 2D tega ne potrebujemo, zato izberemo vsak zvok po vrsti in počistimo polje »3D zvok«.

Zdaj lahko začnemo dodajati zvoke predmetom igre. Če želite to narediti, moramo po vrsti izbrati vsak gumb in mu dodati novo komponento »Audio Source« iz razdelka »Audio«. Ko je komponenta dodana, izberite ustrezen gumb »Audio Clip« in počistite potrditveno polje »Play On Awake«, ki je privzeto aktivno (predvajaj, ko se pojavi):

Ko so vsi zvoki pritrjeni na prave gumbe, je čas za zabavni del - pisanje skriptov ...

Prvi scenarij

Preden začnemo razčlenjevati naš prvi skript, je verjetno vredno povedati nekaj besed o skriptnem sistemu v samem Unity 3D.

Unity vam omogoča pisanje kode v treh jezikih hkrati: JavaScript (natančneje, njegova nekoliko spremenjena različica UnityScript), C # in Boo. V številnih knjigah in vodnikih lahko najdete mnenje, da je za začetnike skriptiranje v Unity lažje obvladati na primeru JavaScripta. Vendar ta jezik ni tako udoben kot drugi in v prihodnosti se ga boste najverjetneje morali učiti znova. Zato je bolje začeti takoj z učenjem C # (Boo je tudi dober, vendar je na njem malo gradiva za usposabljanje).

Zdaj o tem, kam napisati kodo. Privzeti urejevalnik kode v Unity 3D je MonoDevelop IDE. Prednost tega razvojnega okolja je, da ima namige za hiter vnos standardnih metod, razredov in funkcij ter sistem za preverjanje sintakse. Vendar pa je bila zame pomanjkljivost obsežnost in visoka intenzivnost virov. Na srečo lahko v nastavitvah Unity kot urejevalnik besedil nastavite karkoli, zato sem zase "obesil" lahek in funkcionalen Notepad ++ (v njem bodo prikazani skoraj vsi primeri).

In zadnja. Seveda brez referenčnih materialov pri obvladovanju vseh zapletenosti motorja ne boste prišli daleč, zato je tukaj seznam več razumnih internetnih virov na temo Unity 3D:

  • http://docs.unity3d.com/ru/current/Manual/UnityManualRestructured.html - uradni priročnik za motor z delnim prevodom v ruščino (pojavil se je pred kratkim in je včasih nestabilen);
  • http://docs.unity3d.com/ru/current/ScriptReference/index.html - uradni referenčni priročnik za skripte v angleščini;
  • http://unity3d.ru/distribution/index.php - ruski forum za razvijalce Unity 3D;
  • http://habrahabr.ru/post/141362/ - serija lekcij o ustvarjanju tridimenzionalnih iger na Habrahabru;
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx - Microsoftova uradna referenca C# v ruščini.

No, da ne bi dolgo vlekli, predlagam, da takoj ustvarite prvi scenarij. Pod skripte, če jih je veliko, je bolje dodeliti ločeno mapo, vendar bo naša igra preprosta, tako da lahko ustvarimo skript neposredno v korenski mapi projekta. Če želite to narediti, pokličite kontekstni meni v oknu projekta, izberite seznam Ustvari in kliknite »Skript C#«. Poimenujmo našo novo skripto, na primer Zvoki in jo odprimo z dvojnim klikom. Po odstranitvi standardnih metod Posodobi in Zaženi in nato po registraciji potrebnih dobimo naslednji skript:

Če urejevalnika niste znova konfigurirali, se bo naš skript odprl v MonoDevelop. Oglejmo si njegovo strukturo ...

Pravzaprav je vsak skript C# sestavljen iz treh glavnih delov:

  1. Čisto na vrhu so navedene knjižnice, ki jih je treba povezati, da skript deluje (na primer »using Unity.Engine« povezuje delo samega motorja, »using System.Collections« pa knjižnica, ki vsebuje številko vgrajenih razredov za delo skripta v različnih sistemih).
  2. Deklaracija razreda in spremenljivke. V C# ni koncepta skripta kot takega. Namesto tega se uporablja koncept "razreda", ki vključuje številne metode in funkcije. Čeprav je pravzaprav v kontekstu Unity 3D to skoraj isto :) Glavna stvar, ki si jo morate zapomniti, je, da se mora ime razreda ujemati z imenom, ki smo ga dali skriptu. Posebnost spremenljivk v C# je, da morajo biti (razen začasnih, ki so deklarirane v samem skriptu) vtipkane. V praksi to pomeni, da je treba za spremenljivko določiti nivo dostopa (zasebno ali javno) in tip (int, float, bool ali, kot imamo v skripti, AudioClip), hkrati pa je lahko poljubno ime spremenljivke. Lahko pa mu takoj pripišete vrednost.
  3. Niz metod in funkcij. Metoda v C# je skoraj vsaka funkcija, ki izvaja določena dejanja. Načeloma se v literaturi o Unity 3D imenujejo funkcije, če pa govorimo o C # kot ločenem programskem jeziku, potem so to navsezadnje metode :). Čiste funkcije v Unity so na primer standardne funkcije za izpis zvoka, risanje elementov GUI itd., ki se uporabljajo znotraj metod.

Ko zdaj poznamo strukturo skripta, je enostavno razumeti njegov pomen, ki se skrči na naslednje ... V razredu Sounds (skript) deklariramo 9 spremenljivk tipa AudioClip z imeni, ki jih potrebujemo za udobje jih razlikovati. Nujno jih naredimo javne (zasebne ne bodo prikazane v urejevalniku in na njih bomo morali "obesiti" zvoke prek urejevalnika). In nato v telesu skripta uporabimo standardno metodo "void OnMouseDown ()". Prej je bil odgovoren le za obdelavo klika miške, v novih različicah pa se razlaga tudi kot dotik zaslona na dotik. Vanj zapišemo pogoje, po katerih preverjamo imena pritisnjenih trkalnikov in, če zaznamo pritisk enega od njih, izpišemo ustrezen zvok (uporabimo standardno funkcijo audio.PlayOneShot();).

Pri pisanju kode bodite previdni, da vključite vse oklepaje, sicer boste nenehno prejemali poročila o napakah v konzoli in svojega projekta sploh ne boste mogli zagnati! Pozorni bodite tudi na uporabo velikih začetnic v imenih metod in funkcij. Pogosto so tudi vzrok za napake. In seveda upoštevajte vse znake (pike, dvopičja in oklepaje), skratka sintakso jezika. Sprva bo težko, a čez čas boš začel pisati iz nič brez napak!

Ko je skript pripravljen, ga izberite in v oknu inšpektorja vsaki spremenljivki dodelite drugačen zvok. Zdaj moramo le še uporabiti naš skript za predmete v sceni. Najlažji način, da to storite, je spet tako, da povlečete skript neposredno na želeni predmet igre na seznamu Hierarchy:

Če je bil skript pravilno vlečen, bi se moral pojaviti v oknu Inspector poleg predmeta, na katerega smo ga povlekli. V skladu s tem povlečemo skript na vse predmete, ki bi morali zveneti v igri, in ga lahko poskusimo zagnati. Ko kliknete naše gumbe za igro, se zdaj končno oglasi določen zvok!

Uvod v GUI

Načeloma Igra pri nas že funkcionira, a je nekako preveč "plešasta". V njem nekaj manjka ... Ali pa vsaj napis z imenom, ki je pred nami! Z drugimi besedami, implementirati morate nekakšen razumljiv uporabniški vmesnik.

Pravzaprav je GUI okrajšava za angleščino. "Graphical User Interface", to je grafični uporabniški vmesnik. Tradicionalno vključuje takšne komponente, kot so:

  • gumbi;
  • okno;
  • besedilna področja;
  • potrditvena polja in/ali radijski gumbi;
  • drsniki (drsni trakovi) itd.

V Unity 3D je vse to (in celo nekaj več kot to) v celoti prisotno. Glavna stvar je, da se ga naučite uporabljati! Oglejmo si, kako lahko Unityjev GUI ustvari preprost naslov.

Če želite to narediti, ustvarite nov skript z imenom Interface in ga spremenite na naslednji način:

Pozorno preglejte skript na posnetku zaslona. Tu pišemo samo eno javno spremenljivko tipa GUIStyle, ki je za nas nova. Ta vrsta vam omogoča vizualno spreminjanje videza elementov, ki jim je ta slog dodeljen. Slogi so uporabni, kadar obstaja veliko elementov vmesnika iste vrste (na primer gumbi), vendar bi morali imeti drugačen videz.

Nato ustvarimo gumb ("GUI.Button"), ki ima naslednjo sintakso: pogoj - 4 koordinate (vodoravni zamik od levega roba, navpični zamik od zgornjega roba, širina, višina) - vidno besedilo v narekovajih in naprej , neobvezno, oznaka sloga. Potrebne funkcije so zapisane znotraj pogoja gumba. V našem primeru smo registrirali prehod na stran razvijalcev ("Application.OpenURL("");").

GUI skripti lahko delujejo iz katerega koli predmeta igre, vendar se običajno priporoča, da jih "obesite" na kamero, kar storimo tako, da povlečemo skript na predmet glavne kamere. Zdaj, če ga izberemo v oknu Hierarchy, potem bomo v oknu Inspector lahko videli javno spremenljivko našega sloga, z razširitvijo pa bomo dobili popoln dostop do nastavitev tega sloga!

V vsaki situaciji lahko določimo barvo in teksturo besedila za ozadje (za gumb morate registrirati njegove tri možnosti (Normalno - običajni pogled, Hover - ob lebdenju in Aktivno - ob kliku), nastaviti oblazinjenje in prilagoditi pisavo. Privzeto je edina pisava, ki je na voljo v Unity 3D, Arial, vendar lahko v projekt ročno naložite katero koli drugo pisavo in jo uporabite v polju »Pisava« ter nastavite vse povezane parametre.

Kar je zanimivo in hkrati premalo priročno, je, da se elementi GUI ne prikažejo na odru, dokler ne začnemo projekta, zato lahko prilagoditev parametrov posameznega elementa vzame veliko časa. Zaženimo projekt in poglejmo, kako bo izgledal zgoraj ustvarjen gumb:

Spreminjanje vmesnika s pogojnimi in statičnimi spremenljivkami

Veliko smo že naredili, vendar je vedno prostor za izboljšave :) Zato predlagam, kot zadnji primer, da ustvarimo okno za pomoč, s katerim navadni razvijalci običajno opremijo svoje igre in aplikacije. Če želite to narediti, dodajte sliko za tak gumb v obliki vprašaja v mapo s slikami in iz nje naredite predmet igre. Nanj obesimo trkalnik in napišemo skript z imenom, na primer "Pomoč" z naslednjo vsebino:

V tem skriptu imamo dve spremenljivki. Prva spremenljivka definira preobleko, ki bo uporabljena za vse elemente vmesnika, opisane v tem razredu. Za razliko od slogov, o katerih smo govorili zgoraj, preobleke omogočajo spreminjanje videza ne le posameznega elementa, ki so mu dodeljene, temveč vseh elementov določene vrste hkrati. Poleg tega za razliko od slogov preobleke niso dodeljene elementom, ampak so deklarirane takoj za celotno metodo in delujejo, dokler ni deklarirana druga preobleka. Ne pozabite tudi, da preobleke ne obstajajo samo kot spremenljivke, ampak tudi kot ločene datoteke. Zato morate pred deklaracijo preobleke takoj ustvariti v oknu »Projekt« v kontekstnem meniju: »Ustvari« - »Preobleka GUI«.

Druga spremenljivka, ki jo imamo, je logična (ali drugače logična). Lahko ima samo dve vrednosti: "true" (true) ali "false" (false). Zaradi svoje binarne narave je takšna spremenljivka popolna za implementacijo vseh vrst stikal. V našem primeru bo odgovoren za prikaz besedila, ki opisuje našo igro.

Vendar, če pogledate natančno, boste opazili, da ima zadnja spremenljivka en čudovit parameter - "statični". Če dodate ta parameter spremenljivkam, jih lahko naredite statične in do njih dostopate iz drugih skriptov!

Ampak nazaj k preostalemu delu kode. Metoda "void OnMouseDown()", ki nam je tukaj že znana, bo služila kot stikalo za spremenljivko "isVisible" z uporabo preprostega pogoja. Vendar pa po stanju obstaja še ena funkcija. Ta funkcija ("Debug.Log();") se uporablja za izpis "na letenju" v konzolo vrednosti spremenljivk, ki jih potrebujemo (vnesemo jih brez narekovajev v oklepajih). Kot lahko vidite, lahko znotraj funkcije kombinirate nespremenljivo besedilo (napisano v narekovajih) in spremenljivke (brez narekovajev). Glavna stvar je, da mora biti med vsemi podatki znak "+".

Nadalje v besedilu skripta imamo metodo za risanje vmesnika ("void OnGUI()()"), znotraj katere vidimo deklaracijo nove preobleke ("GUI.skin = HelpSkin;") in novo vmesniški element tipa GUI.Box. Za razliko od gumba je polje neaktiven element in običajno služi za prikaz različnih besedilnih ali grafičnih podatkov.

Bodite pozorni na to, kako nastavite položaj za škatlo. Tukaj vse vrednosti niso določene neposredno, ampak s pomočjo matematičnih izrazov, kar je pravzaprav analog "fluidne postavitve" v spletnem razvoju. Težava je v tem, da se pri določanju natančnih velikosti elementov grafičnega uporabniškega vmesnika pri različnih ločljivostih zaslona le-ti ne bodo prilagajali in so lahko premajhni ali, nasprotno, veliki. V naslednji različici motorja razvijalci obljubljajo, da bodo naredili GUI prilagodljiv, vendar se moramo zaenkrat sprevrniti :(

Zadnji korak na poti do uspeha bo prilagoditev naše kože. Datoteko preobleke določimo v spremenljivki skripta in nato to datoteko izberemo v oknu projekta. Kot pri drugih datotekah bodo nastavitve preobleke prikazane v oknu inšpektorja. Tukaj iščemo element, ki se lahko spremeni (v našem primeru Box), ga odpremo in nastavimo na enak način kot zgoraj opisani slog:

Da preverimo, ali naš skript deluje pravilno, zaženimo projekt in poskusimo klikniti gumb za pomoč:

Zdaj vse deluje, vendar ni vedno priročno pritisniti gumb za pomoč, da skrijete opis nazaj. Bolj običajno je, da poljubna obvestila vtikate v katero koli prosto mesto kot ciljanje na gumbe. In tukaj moramo samo uporabiti dejstvo, da smo spremenljivko "isVisible" naredili statično, pa tudi trkalnik obešen na sliko ozadja ...

Vrnimo se k našemu prvemu skriptu ("Zvoki"), ki je sledil pritiskom gumbov za predvajanje zvokov. Dovolj bo, da vanj vpišemo samo eno vrstico (natančneje znotraj metode "void OnMouseDown ()":

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

S to vrstico postavimo pogoj: če ime pritisnjenega trkalnika ni enako imenu gumba za pomoč, potem bo spremenljivka "isVisible" v skriptu "Help" enaka "false". Potrebno je le, da ima spremenljivka "isVisible" zagotovo postscript "static", sicer dobimo napako.

Zdaj, ob zagonu, bomo videli, da je naše okno s pomočjo zaprto, ko ne samo kliknemo na gumb v zgornjem desnem kotu, temveč tudi, ko se dotaknemo katerega koli prostega dela zaslona. Edina stvar, ki jo je mogoče izboljšati, je, da se okno skrije, ko kliknete nanj ... To bo vaša "domača naloga";) Lahko samo rečem, da bo treba polje GUI spremeniti v podobno oblikovan gumb, spet , z nastavitvijo preobleke in predpisom funkcije, ki spremeni spremenljivko "isVisible". Vse, tiho :)

Prevajanje igre in shranjevanje projekta

Končno nam vse uspe! To pomeni, da je čas, da shranimo našo igro in jo preizkusimo na pravi napravi. In za to ga je treba prevesti v izvedljivo datoteko (za Windows, na primer v EXE, za Android pa v APK).

Če želite sestaviti igro za osebni računalnik, vam ni treba narediti nobenih predhodnih nastavitev. Za Android pa boste morali najprej povezati Android SDK, ki smo ga prenesli na samem začetku. To naredite preprosto: pojdite v meni »Uredi«, pokličite postavko »Nastavitve« in v oknu, ki se odpre, pojdite na zavihek »Zunanja orodja«. Tukaj iščemo vrstico "Lokacija Android SDK" in v njej navedemo pot do nepakiranega arhiva s SDK (glejte spodnji posnetek zaslona). Mimogrede, tukaj lahko spremenite tudi pošastni urejevalnik besedil MonoDevelop, ki je privzeto aktiven, na svojega najljubšega :)

In zdaj je prišel trenutek resnice! Pojdite v meni »Datoteka« in tam poiščite postavko »Nastavitve gradnje«. V oknu, ki se odpre, bomo morali takoj dodati prizore za montažo. Če je samo ena scena (kot v našem projektu), bo dovolj, da kliknete gumb »Dodaj trenutno«. Če jih je več, jih boste morali odpreti vsakega od njih in jih na enak način dodati na seznam prizorov, nato pa z vlečenjem in spuščanjem prilagoditi njihov želeni vrstni red:

Naslednji korak je, da izberete gradbeno platformo (načrtujemo igro za Android, kar pomeni, da jo izberemo) in kliknete spodnji gumb "Nastavitve igralca". Okno inšpektorja bo odprlo številne nastavitve, od katerih so nekatere obvezne ali zelo zaželene. Zaželeno je, da na vrhu seznama nastavitev navedete imena podjetja razvijalca, programa in njegove ikone (ime podjetja, ime izdelka in privzeta ikona).

Na dnu v razdelku »Druge nastavitve« sta dva zahtevana parametra: »Identifikator svežnja« in »Različica svežnja«. Privzeta različica je nastavljena na 1.0, vendar bo treba identifikator ustvariti ročno in po možnosti edinstven. Sestavljen naj bo iz treh delov, ki so med seboj ločeni s pikami: rezervirana beseda »com«, nato ime podjetja razvijalca in na koncu ime same aplikacije.

Preostale nastavitve sklopa lahko spremenite po lastni presoji ali pa jih sploh ne spremenite. Glavno, da se bo zdaj kompilacija že lahko začela. Če želite to narediti, samo kliknite gumb "Build" v oknu "Build Settings" in počakajte, da nam program ponudi že pripravljeno aplikacijo, zapakirano v datoteko APK :)

Zaključek

To zaključuje naš pregled lekcije o ustvarjanju najpreprostejših aplikacij za Android. Da boste lahko ponovili vse, o čemer smo govorili, bom na koncu članka dal povezavo do arhiva, v katerem bodo shranjeni vsi viri igre kot ločena mapa (če želite narediti vse od začetka) in kot datoteko s pripono unitypackage. Slednje vam omogoča uvoz celotnega projekta v Unity naenkrat, vključno z odvisnostmi itd.

Če želite uvoziti naš projekt (in mimogrede vse vtičnike, prenesene iz interneta ali Assets Store), morate iti v meni "Assets", izbrati element "Import Package" in v njem "Custom Packege", nato določite pot do naše datoteke in pritisnite gumb "Uvozi". Mimogrede, iz istega menija (»Sredstva«) lahko naredite popolno varnostno kopijo svojega projekta in ga shranite v tak unitypackage s klikom na postavko »Izvozi paket«.

Zdi se, da vse :) Kot oseba, ki je sama obvladala Unity 3D iz nič, sem v članku poskušal odgovoriti na največje število vprašanj in izpostaviti glavne nianse dela z motorjem, ki se pojavijo na začetku. Ampak, morda to ne bo dovolj za nekoga, zato, če imate kakršna koli vprašanja, se lahko obrnete name neposredno po pošti ali na forumu: Pomagal vam bom po svojih najboljših močeh!

Vsem želim veliko sreče in uspešno izvedbo vseh projektov!

P.S. Ta članek je dovoljeno prosto kopirati in citirati, če je navedena odprta aktivna povezava do vira in ohranjeno avtorstvo Ruslana Tertyshnyja.