Kreiranje 3d igre za android unity. Kreiranje igre na Androidu. Šta je dizajner igara

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 rješavati probleme koji izostaju pri radu sa iOS-om. Postoje i razlike između Android i iOS verzija Unity-a.

Priprema Android razvojnog okruženja

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 sistem (ovaj proces je drugačiji za Windows i Mac). Ovo je detaljno napisano na web stranici Android Developers, kao i Dodatne informacije može dati proizvođač vašeg uređaja. Budući da je ovo prilično kompliciran proces, pripremili smo malo uputstvo koje ć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 Android funkcijama

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

Povezivanje C, C++ ili Java koda sa skriptama

Unity vam omogućava da pozivate funkcije napisane u C/C++ direktno iz skripti (Java funkcije se mogu pozvati indirektno). Da naučite kako pristupiti funkcijama iz izvornog koda iz Unity-a, posjetite stranicu za izgradnju Android dodataka.

Odstranjivanje okluzije (rezanje nevidljive geometrije)

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

Prilagođavanje početnog ekrana

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

Rješavanje problema i prijavljivanje grešaka

Postoji mnogo 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 grešaka u najkraćem mogućem roku. Ako nakon čitanja priručnika pretpostavite da je problem u Unity-u, trebali biste podnijeti izvještaj o grešci. Pogledajte ovu stranicu za upute.

Po čemu se Unity za Android razlikuje od desktop verzije

JavaScript sa jakim kucanjem

Za poboljšanje performansi u Android verziji Unity-a, dinamičko kucanje u JavaScriptu je uvijek onemogućeno (kao da se #pragma strict automatski primjenjuje na svaku skriptu). Ovo je važno zapamtiti ako prenosite projekat na Android sa starijih platformi i ako naiđete na greške u kompilaciji, problem prije svega treba tražiti u kucanju. Takve greške se obično lako rješavaju osiguravanjem da su tipovi svih varijabli eksplicitno specificirani ili izbačeni tokom inicijalizacije.

Dok Unity Android podržava DXT/PVRTC/ATC teksture, Unity će dekomprimirati teksture u RGB(A) format tokom rada ako ove metode kompresije nisu podržane na određenom uređaju. Ovo može ozbiljno utjecati na performanse GPU renderiranja, pa 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 kvaliteta, veličine i brzine prikazivanja tamo gdje je alfa kanal potreban.

Unity 3D će biti nezamjenjiv alat za one koji profesionalno pristupaju zadatku stvaranja visokokvalitetnog materijala. Aplikacija integrira gotove modele, skripte i teksture, koje možete dopuniti vašim vlastitim sadržajem - slikama, zvukovima i video zapisima.

Gotovi proizvodi kreirani u Unity 3D kompatibilni su sa gotovo svim popularnim platformama - od mobilni telefoni i završava sa SMART televizorima.

Karakteristike programa:

  • mašina za učenje Unity;
  • fleksibilni multifunkcionalni uređivač;
  • visoka brzina kompilacije;
  • interfejs koji se lako uči;
  • kompatibilnost sa velikim brojem platformi.

Princip rada

Da biste koristili program, potrebno je da preuzmete platformu Unity Hub i preko nje možete isprobati funkcije besplatne Personal verzije. Dostupan je sa obima monetizacije do 100 hiljada dolara godišnje.

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

Unity Plus (~25 USD mjesečno) - pruža ograničen pristup usluzi Customer Success Advisor, prikuplja informacije o kvarovima na korisničkim uređajima, prati povratne informacije.

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

Izgradnja svega 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, možete učiniti proizvod jedinstvenim ili koristiti alate integrirane od strane programera. Važno je shvatiti da je svaki objekt kreiran u ovom konstruktoru specifičan skup skripti i događaja koje možete sami kontrolirati.

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

Treba napomenuti da za rad sa 3D grafikom morate imati moderan računar sa hardverskom video karticom.

Pros:

  • gotovo neograničena funkcionalnost za kreiranje projekata;
  • podrška za 3D grafiku zasnovanu na pretraživaču;
  • kompatibilan sa igraće konzole i moderni televizori;
  • veliki broj alata za vizualizaciju;
  • postoji besplatna verzija.

Minusi:

  • potrebno je specifično znanje za stvaranje kvalitetnog proizvoda;
  • ne postoji mogućnost vrlo finog podešavanja fizičkog jezgra programa;
  • nema prevoda interfejsa na ruski.

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

Da biste se upoznali sa mogućnostima platforme, samo preuzmite besplatna verzija Unity 3D. Ako vam je potreban pristup izvornom kodu, pogledajte plaćene verzije.

analozi:

  • urednik igre- besplatna aplikacija za kreiranje igara;
  • Construct 2 je popularan konstruktor igara sa jednostavnim interfejsom.
  • Construct 2 je moćan program za kreiranje 2D projekata.

Zdravo svima! Pošto sam naučio da pravim igrice na ovom motoru, želim da vas naučim istom. Prvo, potreban nam je sam Unity3d, bilo koji uređivač 3D modela i ravne ruke koje rastu iz ramena.

1. Učenje programa

Za početak, preporučujem instaliranje Monodevelop! Hajde da shvatimo šta 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 igrice na njemu.

Razmotrite gornji snimak ekrana:

  • Scena je vaš kreativni pješčanik.
  • Projekt - ovdje su sve animacije i modeli, zvukovi i teksture.
  • Da biste instalirali modele na gornjoj alatnoj traci, odaberite Assets-Import New Asset. Takođe možete i sredstva-uvoz paket-prilagođeni paket. U drugom slučaju, paket mora biti u ekstenziji .unity.
  • Hijerarhija - svi objekti u sceni. Tamo kreirate roditelje za objekat. Samo premjestite objekt na drugi u hijerarhijskom meniju i on će biti priložen. Rezultat će biti neka vrsta foldera.
  • Toolbar - lista alata. Tamo možete omogućiti 2D, 3D način rada.
  • Inspektor - karakteristika objekta, gdje dodajete animacije, skripte i još mnogo toga. Tamo možete koristiti alate: pomjerati kameru, pomicati objekt, rastegnuti, rotirati objekt.


Sada vidite meni objekata u njemu možete dodati animacije, skripte i još mnogo toga.

Mislim da sa ovim menijem nećete imati problema.
Kliknite da kreirate bilo koji objekat.

Općenito, proučili smo program, uskoro će biti moguće pisati vlastite igre.

2. Kreirajte jednostavnu igru

Prvo, kreirajmo teritoriju Create-Terrain. Dodajte travu i drveće. Klikom na tlo sa desne strane pojaviće se prozor, izaberite drveće, travu.


Također stvarajte planine i neravnine. Zatim učitajte paket Characher kontrolera u projekat. Zatim tražimo u prozoru sa projektom kontrolora Standardna sredstva-Characters i biramo pogled iz prvog lica (kapsula) ili pogled iz trećeg lica (mehaničar).
Ako je prva osoba, onda je samo stavite na zemlju. Ako iz trećeg, onda morate preuzeti animaciju. Takođe preporučujem da postavite osvetljenje scene na Kreiraj usmereno svetlo.


Da dodate muziku, prevucite 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 ime). Odaberite platformu i voila, gotovi ste. Da biste to učinili, morate instalirati Android SDK. Ali tamo trebate navesti mapu sa SDK-om, a ne trebate samo SDK, već API željenog nivoa (na primjer, Android 4.2 ima API 17). Na primjer, da bi igra bila na Androidu 4.0+, morate 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 je jedno od najprofitabilnijih zanimanja u kompjuterskoj industriji. Kreiranje Android igre košta stotine ili hiljade dolara, a zarada može doseći i do milion dolara. U tom smislu, mnogi ljudi su zainteresovani za razvoj aplikacija za telefon. U ovom ćete članku naučiti kako napraviti Android igru ​​od nule pomoću računala, koji motor i dizajner je bolje odabrati.

Nema uspešna igra ne mogu bez prelepa grafika Stoga je kreiranje dizajna jedna od najvažnijih faza razvoja. Dizajn na Android OS-u se implementira korištenjem „dokumenta o dizajnu“ ili dizajnerskog dokumenta. Morate početi stvarati igračku s njenim detaljnim proučavanjem. Fajl sadrži:

  1. Objektni modeli;
  2. Funkcionalne specifikacije;
  3. Sadržaj igre;
  4. Interface.

Razmotrimo svaku od tačaka detaljnije.

Objektni modeli

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

Funkcionalne specifikacije

Opisuje igru, glavne karakteristike svakog lika. Ovdje je i opis karakteristika predmeta igre - oružja, kompleta prve pomoći, oklopa i drugih. U suštini, funkcionalne specifikacije su pravila po kojima proces igre. Što je ovaj odjeljak bolje razrađen, lakše će biti kreirati kvalitetnu Android igru.

Sadržaj igre

Ovo je popunjavanje teksta igre. Opisuje dijaloge likova i koje oružje se može koristiti za nanošenje štete, koliko zdravlja će uzeti pogodak, koje karakteristike će se povećati pri korištenju različite opreme. Takođe sadrži Detaljan opis svaku stavku.

Interface

Interfejs je način na koji će korisnik komunicirati sa igrom. Sadrži dugmad pomoću kojih možete upravljati likom i sekcije menija: na primjer, igra, rezultat, postavke, najbolji igrači, pomoć. Ako nemate iskustva u kreiranju Android aplikacija, prije kreiranja vlastite, preuzmite sa Play Marketa i analizirajte popularne igre i prenesite najbolja rješenja u vaš projekat.

Game engine

Srž svake igre je motor. Ovo je softver koji vam omogućava da ga razvijete i pokrenete. Sadrži čitav niz programa, uključujući mašinu za renderovanje, mašinu za fiziku, zvuk, animaciju i još mnogo toga. Kako bi olakšali proces pisanja programa, programeri treće strane kreiraju vlastite motore za igre posebno za Android aplikacije.

Svaki od njih nudi različite karakteristike: neke su dizajnirane za 3D, druge za 2D, može se podržati više platformi. 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

Moment 2d/3d

Šta je dizajner igara?

Constructor je program koji kombinuje motor igre i integrisano razvojno okruženje. Konstruktor čini proces razvoja dostupnim ljudima koji nemaju vještine programiranja. Neki od dizajnera vam omogućavaju da kreirate igre određenih žanrova, drugi imaju maksimalnu funkcionalnost, ali koštaju mnogo više novca. Za kreatore mobilnih aplikacija početnika, izbor dizajnera je jedan od najvažnijih trenutaka, jer će sudbina buduće aplikacije ovisiti o njenim mogućnostima.

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

Zaključak

Kreiranje Android igre nije lak, ali vrlo profitabilan posao. Ako odlučite da razvijete igru ​​i zaradite na njoj, prvo razradite ideju. Zatim napišite “dizajn dokument” i odlučite se za motor igre koji može maksimalno iskoristiti svoj potencijal. Nakon toga možete nastaviti direktno sa kreiranjem aplikacije u konstruktoru.

Video

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

Kako brzo i relativno lako napraviti jednostavnu igricu ili aplikaciju za Android? O tome pročitajte u donjem članku koji se bavi radom sa Unity3D motorom.

Igrate li kompjuterske igrice? Ako je tako, onda ste, sigurno, u procesu prolaska sljedeće igre blockbuster, ponekad imali misli poput: "Ali evo, ja bih to krivo učinio!". Da li i sami želite da budete programer? Onda vam nudim malu, ali veoma zabavnu "avanturu";)

Šta je motor i zašto je potreban?

Ranije, još u danima prvih kompjutera, igre i programi su kreirani takozvanom "hardcore" metodom. Odnosno, za punopravni razvoj bio je potreban prilično iskusan programer koji u potpunosti poznaje svoj programski jezik i može napisati gotovo cijelu igru ​​(uključujući grafiku piksela i specijalne efekte!) u jednostavnom Notepadu. Takvih je bilo malo i bili su veoma cijenjeni (i još uvijek se cijene)...

Danas je prag za ulazak u temu programiranja značajno smanjen. A to je olakšano ne samo dostupnošću literature i svih vrsta materijala za obuku, već i sve pojednostavljenim razvojnim procesom. U današnje vrijeme rijetko je sresti prave "hardcore" ljude, jer su se pojavila prilično zgodna razvojna okruženja koja se nazivaju "motori".

Suština motora je u tome što vam omogućava da uvezete sve potrebne objekte igre u pojednostavljenom vizualnom modu, uredite ih na virtualnoj pozornici i konfigurirate sve njihove parametre. Odnosno, zadatak programera je samo da ispravno napiše logiku igre!

Međutim, za praktičnost rada morate platiti blagim povećanjem veličine projekta (ponekad čak i nekoliko puta!) u odnosu na njegov pandan, napisan na stari "hardcore" način. Upravo iz tog razloga neki programeri ne vole motore ili pokušavaju da pišu svoje, u kojima se koriste samo komponente koje su im potrebne...

Ali vi i ja smo daleko od pravih programera :) Stoga, hajde da napravimo jednostavnu igricu za Android baziranu na popularnom i moćnom Unity3D engine-u.

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 kompajliranja gotove igre za bilo koji uređaj;
  • relativna lakoća kontrole motora;
  • dobra proširivost funkcionalnosti povezivanjem dodataka;
  • relativno mala veličina finalnog sklopa igre (u poređenju sa drugim motorima).

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

Kada se sve preuzme, možete raspakovati u bilo koji Android SDK folder koji vam odgovara, a zatim nastaviti s instalacijom samog Unity3D. Instalira se kao i svaki običan Windows program, tako da ne bi trebalo biti problema sa instalacijom. Nakon instalacije, motor će se pokrenuti i prvo ćemo morati kreirati novi projekat:

Da bismo to učinili, morat ćemo zatvoriti sve prozore dobrodošlice i uvodne prozore, a zatim odabrati "Novi projekat" iz menija "Datoteka". U prozoru koji se otvori (pogledajte snimak ekrana iznad), od nas će biti zatraženo da navedemo fasciklu za spremanje projekta (njegov naziv će biti isti kao i naziv projekta), uvezemo neke standardne skupove funkcija (ne trebaju nam) i odredimo režim rada. Odaberite 2D kao mod i kliknite na dugme "Kreiraj". Ovim je završen pripremni dio posla :)

Interfejs motora i hijerarhija projekta

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

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. Prozor hijerarhije - prikazuje hijerarhijski položaj aktivnih i neaktivnih objekata na sceni. Podrazumevano, jedini objekat odmah na listi 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ćava vam da ih uređujete, dopunjujete ili brišete.
  4. Prozor igre - prikazuje svijet igre koji je vidljiv kameri i omogućava vam da odaberete veličinu testnog prozora virtuelne igre u pikselima. Također, omogućava vam da aktivirate proširenje prozora igre u punoj veličini (Maximize on Play) i omogućite / onemogućite prikaz raznih informacija za programera.
  5. Prozori projekta i konzole. Prozor projekta se koristi za navigaciju kroz resurse projekta: otpremljene slike, zvukove, modele itd. Takođe pomoću ovog prozora (kontekstnog menija) možete kreirati nove prazne objekte igre različitih tipova i skripti. Prozor konzole se koristi za prikaz poruka o grešci (crveno), upozorenja (žuto) i raznih informacija o otklanjanju grešaka koje ste zatražili (sivo).
  6. Prozor Asset Label je donji dio prozora inspektora, koji prikazuje pregled objekta ili datoteke odabrane u prozoru projekta.

Pored svega navedenog, obratite pažnju na tri dugmeta u gornjem centru. Oni vam omogućavaju da pokrenete svoj projekat, pauzirate ga (ponekad je korisno kada debugujete da vidite šta se radi u hijerarhiji, na primer) i, u skladu s tim, isključite ga.

Napravit ćemo simulator muzičkog instrumenta: indijske narodne bubnjeve zvane "tabla", stoga ćemo, za početak, kreirati dva prazna foldera u projektu u koje će biti pohranjeni zvukovi i slike. Možete kreirati novu fasciklu tako što ćete pozvati kontekstni meni u prozoru Project Navigator i izabrati stavku "Folder" sa liste "Kreiraj".

Ovdje je vrijedno reći nekoliko riječi o tome kako bi ove mape trebale biti imenovane. Za jednostavnu igru, poput našeg simulatora, u principu, fascikle se mogu "imenovati" kako želite, međutim, postoje barem dva imena koja je bolje ne koristiti, jer su rezervisani od strane motora. Ovo su nazivi Resursi i Dodaci. U velikim projektima, mapa Resursi se kreira odmah i svi "rezervni dijelovi" igre (slike, zvukovi, modeli, teksture i prefabovi) su već pohranjeni u njemu (poređani po podmapama). U Plugins-u, kao što naziv implicira, pohranjuju se svi dodatni setovi funkcija trećih strana (tzv. "assets" (assets)), kojih ima poprilično u Asset Store-u - trgovini ekstenzija za Unity3D.

Uvoz datoteka i kreiranje objekata igre

Prije kreiranja novog projekat igre poželjno je unaprijed pripremiti sve datoteke potrebne za njegov rad. U našem slučaju, ove datoteke su slike i zvukovi. Najlakši način da ih uvezete u projekat je da ih jednostavno prevučete i ispustite u željeni folder. Počnimo sa slikama...

Nakon što se slike pojave u našem folderu Slike, potrebno ih je malo podesiti:

Činjenica je da prema zadanim postavkama Unity3D komprimira sve slike dodane projektu uz gubitak kvaliteta. Ako nam takav gubitak nije potreban (posebno za igre sa HD grafikom), onda bi trebali odabrati svaku sliku i u prozoru Inspector promijeniti vrijednost parametra "Format" iz "Compressed" u "Truecolor" u "Default" " tab. Možda ćete također morati promijeniti parametar "Maksimalna veličina" ako je manji od stvarne širine slike (podrazumevano je 1024 piksela). Nakon svih promjena, morate zapamtiti da kliknete na dugme "Primijeni" da biste ih primijenili. Ako je potrebno, izvodimo slične radnje za sve ostale slike.

Sada kreirajmo objekte igre od naših slika. Da biste to učinili, jednostavno prevucite željenu sliku u prozor Hijerarhija. Slika ili 3D model će se automatski pretvoriti u objekt igre i prikazati na početnoj koordinatnoj tački ispred kamere.

Prije svega, dodali smo pozadinsku sliku, koja bi trebala biti prikazana na cijelom ekranu. Da li je to tako, možete provjeriti odabirom kamere u hijerarhijskom prozoru i gledanjem kako je prikazan njen okvir. Na slici iznad, možete vidjeti da dio naše pozadine ostaje izvan pogleda kamere, tako da moramo prilagoditi veličinu ovog prikaza prevlačenjem okvira direktno na pozornicu ili uređivanjem parametra "Size" u prozoru Inspector. U našem slučaju, morali smo promijeniti zadanu vrijednost (5) na 5.4.

To je to, kameru više ne diramo, nego dodajemo i prilagođavamo ostale slike. Prilikom dodavanja vidimo da su neki od njih preveliki za našu igru. Možete ih smanjiti fizički u grafičkom uređivaču ili pomoću motora. Pokušajmo sa posljednjom metodom. Da biste to učinili, odaberite sliku u prozoru Hijerarhija, a u prozoru Inspector promijenite vrijednosti "Scale" za koordinate X i Y sa 1 na 0,5 (to jest, smanjite za pola). Na istom mjestu, poželjno je, kako bi se izbjegla preklapanja, svim objektima igre (osim pozadine) dodijeliti nenulti red slojeva (Red u sloju):

Posljednji korak u pripremi objekata igre iz slika bit će "okačenje" sudarača na njih. U Unity3D, sudarači se koriste kao detektori interakcije između objekata. To jest, u stvari, na našu sliku se stavlja virtuelna školjka koja može da registruje dodire sa njom.

Da biste objektu dodali sudarač, odaberite ga u prozoru Hijerarhija, a zatim kliknite na dugme "Dodaj komponentu" u prozoru Inspektora. Na listi komponenti koja se pojavi tražimo Physics 2D (obična 3D fizika neće raditi u našem modu) i od svih opcija, "Circle Collider 2D" nam najviše odgovara. Mi biramo njega. Oko našeg objekta će se pojaviti zelena crta koja prikazuje granice sudarača. Ostaje samo označiti potvrdni okvir "Is Trigger" tako da naš sudarač registruje samo klikove i više ne stupa u interakciju 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 poziciju Z da bude veća od nule da gurnemo kolajder i samu pozadinu u pozadinu (trebaće nam kasnije).

Rad sa zvukom

Sa zvukom u Unity 3D, na prvi pogled, sve je pomalo zbunjujuće. Ali, hajde da pokušamo da to shvatimo redom :)

Prije svega, moramo povući sve zvukove u mapu Zvukovi i malo ih podesiti:

Ako je nivo jačine svih vaših zvukova prvobitno podešen, sve što trebate učiniti je isključiti 3D obradu zvuka. U 3D igrama ova obrada je potrebna kako bi se simulirao pristup izvora zvuka kada mu se kamera približi. Ali u 2D nam ovo ne treba, pa biramo svaki zvuk redom i poništavamo "3D zvuk" iz njega.

Sada možemo početi dodavati zvukove objektima igre. Da bismo to učinili, trebamo odabrati svaki gumb redom i dodati mu novu komponentu "Audio Source" iz odjeljka "Audio". Kada se komponenta doda, odaberite odgovarajuće dugme "Audio Clip" i poništite izbor u polju za potvrdu "Play On Awake" koji je po defaultu aktivan (reproduciraj kada se pojavi):

Kada se svi zvuci prikače na prave tipke, vrijeme je za zabavni dio - skriptiranje...

Prvi scenario

Prije nego što počnemo raščlanjivati ​​našu prvu skriptu, vjerovatno je vrijedno reći nekoliko riječi o sistemu skriptiranja u samom Unity 3D.

Unity vam omogućava da pišete kod na tri jezika odjednom: JavaScript (tačnije, njegova malo izmijenjena verzija UnityScript), C # i Boo. U brojnim knjigama i vodičima možete pronaći mišljenje da je početnicima lakše savladati skriptiranje u Unity-u koristeći JavaScript kao primjer. Međutim, ovaj jezik nije tako udoban kao ostali, a u budućnosti ćete najvjerovatnije morati ponovo učiti. Stoga je bolje početi odmah učenjem C # (Boo je također dobar, ali ima malo materijala za obuku o njemu).

Sada o tome gdje napisati kod. Zadani uređivač koda u Unity 3D je MonoDevelop IDE. Prednost ovog razvojnog okruženja je što ima nagoveštaje za brzi ulazak u standardne metode, klase i funkcije, kao i sistem za proveru sintakse. Međutim, za mene je nedostatak bio glomaznost i visok intenzitet resursa. Srećom, u postavkama Unity možete postaviti bilo šta kao uređivač teksta, pa sam za sebe "okačio" lagani i funkcionalni Notepad ++ (skoro svi primjeri će biti prikazani u njemu).

I poslednji. Naravno, bez referentnih materijala u savladavanju svih zamršenosti motora, nećete otići daleko, pa evo liste nekoliko razumnih internetskih resursa 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/ - serija lekcija o kreiranju trodimenzionalnih igara na Habrahabru;
  • http://msdn.microsoft.com/ru-ru/library/618ayhy6.aspx - Microsoftova zvanična C# referenca na ruskom.

Pa, kako ne bih dugo odlagao, predlažem da odmah kreirate prvu skriptu. Pod skriptama, ako ih ima puno, bolje je izdvojiti zasebnu mapu, ali naša igra će biti jednostavna, tako da možemo kreirati skriptu direktno u korijenskoj mapi projekta. Da biste to uradili, pozovite kontekstni meni u prozoru projekta, izaberite listu Kreiraj i kliknite na "C # Script". Nazovimo našu novu skriptu, na primjer, Zvukovi i otvorimo je dvostrukim klikom. Uklonivši standardne metode Update i Start, a zatim, nakon registracije potrebnih, dobijamo sljedeću skriptu:

Ako niste ponovo konfigurisali uređivač, onda će se naša skripta otvoriti u MonoDevelop. Pogledajmo njegovu strukturu...

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

  1. Na samom vrhu su navedene biblioteke koje je potrebno povezati da bi skripta radila (na primjer, "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 sistemima).
  2. Deklaracija klase i varijable. Ne postoji koncept skripte u C# kao takav. Umjesto toga, koristi se koncept "klase", koji uključuje niz metoda i funkcija. Iako je, u stvari, u kontekstu Unity 3D, ovo je skoro ista stvar :) Glavna stvar koju treba zapamtiti je da ime klase mora odgovarati imenu koje smo dali skripti. Posebnost varijabli u C# je u tome što one moraju (osim privremenih, koje su deklarirane u samoj skripti) biti ukucane. U praksi to znači da se za varijablu mora specificirati nivo pristupa (privatni ili javni) i tip (int, float, bool ili, kako imamo u skripti, AudioClip). Ili mu možete odmah dati 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 one se zovu funkcije, ali ako govorimo o C# kao zasebnom programskom jeziku, onda su to, ipak, metode :). Čiste funkcije u Unity-u 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 njeno značenje, koje se svodi na sljedeće... U klasi Sounds (script) deklariramo 9 varijabli tipa AudioClip sa imenima koja su nam potrebna za praktičnost razlikuju ih. Obavezno ih činimo javnim (privatni neće biti prikazani u uređivaču, a moraćemo da "okačimo" zvukove na njih preko editora). A onda u tijelu skripte koristimo standardni metod "void OnMouseDown ()". Ranije je bio odgovoran samo za obradu klika mišem, ali se u novim verzijama tumači i kao dodir na ekran osetljiv na dodir. U njega upisujemo uslove po kojima provjeravamo nazive pritisnutih kolajdera i, ako otkrijemo pritisak na jedan od njih, emitujemo odgovarajući zvuk (koristimo standardnu ​​funkciju audio.PlayOneShot();).

Prilikom pisanja koda, pazite da uključite sve otvarajuće i završne zagrade, inače ćete stalno primati izvještaje o greškama u konzoli i uopće nećete moći pokrenuti svoj projekt! Također obratite pažnju na upotrebu velikih slova u nazivima metoda i funkcija. Oni su takođe često uzrok grešaka. I, naravno, pazite na sve znakove (tačke, dvotočke i zagrade), ukratko, sintaksu jezika. U početku će biti teško, ali s vremenom ćete početi pisati od nule bez grešaka!

Kada je skripta spremna, odaberite je i u prozoru Inspector dodelite drugačiji zvuk svakoj varijabli. Sada samo treba da primenimo naš skript na objekte u sceni. Najlakši način da to učinite je, opet, prevlačenjem skripte direktno na željeni objekt igre u hijerarhijskoj listi:

Ako je skripta ispravno prevučena, onda bi se trebala pojaviti u prozoru Inspector pored objekta na koji smo je prevukli. U skladu s tim, povlačimo skriptu na sve objekte koji bi trebali zvučati u igrici i možemo je pokušati pokrenuti. Kada kliknete na gumbe naše igre, sada će, konačno, zvučati navedeni zvuk!

Uvod u GUI

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

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:

  • dugmad;
  • prozor;
  • tekstualna područja;
  • potvrdni okviri i/ili radio dugmad;
  • klizači (scroll bars) itd.

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

Da biste to učinili, kreirajte novu skriptu pod nazivom Interface i modificirajte je na sljedeći način:

Pažljivo razmotrite skriptu na snimku ekrana. Ovdje pišemo samo jednu javnu varijablu tipa GUIStyle, što je za nas novo. Ovaj tip vam omogućava da vizualno promijenite izgled elemenata kojima je ovaj stil dodijeljen. Stilovi su korisni kada postoji mnogo elemenata interfejsa istog tipa (na primjer, dugmad), ali bi trebali imati drugačiji izgled.

Zatim kreiramo dugme ("GUI.Button"), koje ima sledeću sintaksu: uslov - 4 koordinate (horizontalno uvlačenje od leve ivice, vertikalno uvlačenje od gornje ivice, širina, visina) - vidljiv tekst u navodnicima i dalje , opciono, indikacija stila. Potrebne funkcije su zapisane unutar stanja gumba. U našem slučaju, registrovali smo prelazak na sajt programera ("Application.OpenURL("");").

GUI skripte mogu raditi iz bilo kojeg objekta igre, ali obično im se savjetuje da ih "okače" na kameru, što ćemo učiniti prevlačenjem skripte na objekat glavne kamere. Sada, ako ga odaberemo u prozoru Hijerarhija, onda ćemo u prozoru Inspector moći vidjeti javnu varijablu našeg stila, proširivanjem ćemo dobiti potpun pristup postavkama ovog stila!

Možemo odrediti boju teksta i teksturu za pozadinu u bilo kojoj situaciji (za dugme morate registrovati njegove tri opcije (Normal - normalan prikaz, Hover - pri lebdenju i Aktivno - na klik), postaviti padding i prilagoditi font. Po defaultu, jedini dostupan u Unity 3D font je Arial, međutim, možete ručno učitati bilo koji drugi font u projekat i primijeniti ga u polju "Font", postavljajući sve povezane parametre.

Ono što je interesantno, a ujedno i ne baš zgodno je da se GUI elementi ne prikazuju na bini dok ne započnemo projekat, tako da prilagođavanje parametara svakog elementa može potrajati. Pokrenimo projekat i vidimo kako će izgledati naše dugme kreirano iznad:

Promjena interfejsa po uslovu i statičkim varijablama

Već smo dosta toga uradili, ali uvijek ima prostora za poboljšanje :) Stoga predlažem, kao posljednji primjer, da se napravi prozor pomoći, kojim normalni programeri obično isporučuju svoje igre i aplikacije. Da biste to učinili, dodajte sliku za takvo dugme u obliku upitnika u mapu sa slikama i napravite od nje objekt igre. Okačimo kolajder na njega i napišemo skriptu sa imenom, na primjer, "Pomoć" sa sljedećim sadržajem:

U ovoj skripti imamo dvije varijable. Prva varijabla definira kožu koja će se koristiti za sve elemente interfejsa opisane u ovoj klasi. Za razliku od stilova, o kojima smo gore govorili, skinovi vam omogućavaju da promijenite izgled ne samo pojedinačnog elementa kojem su dodijeljeni, već svih elemenata određenog tipa odjednom. Pored toga, za razliku od stilova, skinovi se ne dodeljuju elementima, već se odmah deklarišu za celu metodu i rade dok se ne deklariše drugi skin. Takođe treba da zapamtite da skinovi ne postoje samo kao varijable, već i kao zasebni fajlovi. Stoga, prije nego što proglasite skin, morate ga odmah kreirati u prozoru "Projekt" iz kontekstnog menija: "Kreiraj" - "GUI Skin".

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

Međutim, ako pažljivo pogledate, primijetit ćete da posljednja varijabla ima jedan divan parametar - "statičnost". Dodavanje ovog parametra u varijable omogućava vam da ih učinite statičnima i da im pristupite iz drugih skripti!

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

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

Obratite pažnju na to kako postavljamo pozicioniranje kutije. Ovdje se sve vrijednosti ne navode direktno, već uz pomoć matematičkih izraza, što je, zapravo, analog "fluidnog izgleda" u web razvoju. Problem je u tome što kada se specificiraju tačne veličine GUI elemenata na različitim rezolucijama ekrana, oni se neće prilagoditi i mogu biti premali ili, obrnuto, veliki. U sljedećoj verziji motora, programeri obećavaju da će GUI učiniti prilagodljivim, ali do sada moramo pervertirati :(

Poslednji korak na putu ka uspehu biće prilagođavanje naše kože. Navodimo datoteku kože u varijabli skripte, a zatim biramo ovu datoteku u prozoru projekta. Kao i kod drugih datoteka, postavke kože će biti prikazane u prozoru Inspector. Ovdje tražimo element koji je podložan promjeni (u našem slučaju Box), otvorite ga i postavite na isti način kao što je gore opisano:

Da vidimo da li naša skripta radi ispravno, pokrenimo projekat i pokušajmo kliknuti na dugme za pomoć:

Sada sve radi, ali nije uvijek zgodno pritisnuti dugme za pomoć da biste sakrili opis nazad. Uobičajenije je ubaciti bilo koje obavijesti u bilo koje slobodno mjesto nego da ciljate na dugmad. I tu samo treba da iskoristimo činjenicu da smo varijablu "isVisible" napravili statičnom, kao i sudarač okačen na pozadinsku sliku...

Vratimo se na našu prvu skriptu ("Zvukovi"), koju prati dugme pritiska za reprodukciju zvukova. Biće nam dovoljno da u njega upišemo samo jedan red (tačnije, unutar metode "void OnMouseDown ()":

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

Ovom linijom postavljamo uslov: ako naziv pritisnutog kolajdera nije jednak imenu dugmeta pomoći, tada će varijabla "isVisible" u skripti "Help" 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 pomoći zatvoren ne samo kada kliknete na dugme u gornjem desnom uglu, već i kada dodirnete bilo koji slobodni dio ekrana. Jedino što se može poboljšati je da se prozor sakrije kada kliknete na njega... Ovo će vam biti "domaća zadaća";) Mogu samo reći da će GUI box morati da se promijeni u slično dizajnirano dugme, opet , sa kožom za podešavanje i propisivanjem funkcije koja mijenja varijablu "isVisible". Sve, ćuti :)

Kompajliranje igre i spremanje projekta

Konačno, sve radi za nas! To znači da je vrijeme da sačuvamo našu igru ​​i testiramo je na pravom uređaju. A za to ga treba kompajlirati u izvršnu datoteku (za Windows, na primjer, u EXE, a za Android, u APK).

Ako želite da kompajlirate igru ​​za PC, onda ne morate vršiti nikakva preliminarna podešavanja. Međutim, za Android, prvo ćete morati povezati Android SDK koji smo preuzeli na samom početku. To se radi prilično jednostavno: idite na meni "Uredi", pozovite stavku "Postavke" i u prozoru koji se otvori idite na karticu "Spoljni alati". Ovdje tražimo liniju "Android SDK Location" i u njoj ukazujemo na put do raspakirane arhive sa SDK-om (pogledajte snimku ekrana ispod). Inače, ovdje također možete promijeniti monstruozni MonoDevelop editor teksta koji je po defaultu aktivan u vaš omiljeni :)

A sada je došao trenutak istine! Idite na meni "Datoteka" i tamo potražite stavku "Postavke izgradnje". 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 da kliknete na dugme "Dodaj trenutnu". Ako ih ima nekoliko, morat ćete otvoriti svaku od njih i dodati ih na listu scena na isti način, a zatim povlačenjem i ispuštanjem prilagoditi njihov željeni redoslijed:

Sljedeći korak je odabir platforme za izgradnju (planiramo igru ​​za Android, što znači da ćemo je odabrati) i kliknuti na dugme "Postavke igrača" ispod. Prozor Inspektor će otvoriti brojne postavke, od kojih su neke obavezne ili vrlo poželjne. Poželjno je da na vrhu liste postavki navedete nazive kompanije koja je programirala, programa i njegove ikone (Naziv kompanije, Naziv proizvoda i Zadana ikona).

Na dnu, u odjeljku "Ostale postavke", postoje dva potrebna parametra: "Bundle Identifier" i "Bundle Version". Zadana verzija je postavljena kao 1.0, ali identifikator će morati biti kreiran ručno i, po mogućnosti, jedinstven. Trebalo bi da se sastoji od tri dijela, međusobno odvojenih tačkama: rezervirane riječi "com", zatim naziva razvojne kompanije i na kraju naziva same aplikacije.

Ostale postavke sklopa možete promijeniti po vlastitom nahođenju ili ih uopće ne mijenjati. Glavna stvar je da će sada kompilacija već moći započeti. Da biste to učinili, samo kliknite na dugme "Build" u prozoru "Build Settings" i pričekajte dok nam program ne da gotovu aplikaciju upakovanu u APK fajl :)

Zaključak

Ovim je završena naša lekcija-recenzija o kreiranju najjednostavnijih aplikacija za Android. Da biste mogli ponoviti sve o čemu smo pričali, na kraju članka ću dati link do arhive, u kojoj će se svi resursi igre čuvati u zasebnom folderu (ako želite sve od nule) i kao fajl sa ekstenzijom unitypackage. Potonje vam omogućava da uvezete cijeli projekat u Unity odjednom, uključujući zavisnosti itd.

Da uvezete naš projekat (i, usput rečeno, sve dodatke preuzete sa Interneta ili Assets Store-a), potrebno je da odete na meni "Imovina", odaberete stavku "Uvoz paketa", a u njoj "Prilagođeni paket", zatim odredite putanju do naše datoteke i pritisnite dugme "Uvezi". Usput, možete napraviti potpunu sigurnosnu kopiju svog projekta, snimivši ga u takav unitypackage, iz istog menija ("Assets") klikom na stavku "Export Package".

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

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

P.S. Dozvoljeno je slobodno kopirati i citirati ovaj članak, pod uvjetom da je naznačena otvorena aktivna veza do izvora i da je sačuvano autorstvo Ruslana Tertyshnyja.