Există mai multe metode utilizate pentru a produce meniuri în cadrul Unității, principalele două fiind construite în sistemul GUI și utilizarea GameObjects cu Colliders care răspund interacțiunilor cu mouse-ul. Sistemul GUI al Unity poate fi dificil de a lucra, astfel încât vom folosi abordarea GameObject, care cred că este și mai distractivă pentru ceea ce încercăm să realizăm aici.
Înainte de a proiecta un meniu, trebuie să determinați întotdeauna ce rezoluție o veți servi.
Deschideți setările Playerului prin meniul de sus, Editați> Setări proiect> Player și introduceți valorile implicite pentru lățimea și înălțimea ecranului în inspector. Am ales să plec de pe a mea ca implicit 600x450px după cum se arată mai jos.
Apoi, trebuie să ajustați dimensiunea ecranului dvs. de joc de la "Aspect gratuit" la "Web (600 x 450)", altfel ați putea să vă poziționați elementele de meniu de pe ecran.
Așa cum ați văzut în previzualizare, scena meniului va avea mediul nostru de joc în fundal, astfel încât atunci când faceți clic pe Play, veți intra fără probleme în joc.
Pentru a face acest lucru trebuie să vă poziționați jucătorul undeva în scenă unde vă place fundalul și rotunjiți valoarea rotației Y. Acest lucru este atât de ușor să vă amintiți și să replicați mai târziu, astfel încât tranziția să fie fără probleme din meniu în joc.
Să începem acum cu crearea scenei meniului!
Asigurați-vă că scena dvs. este salvată și se numește "joc" - veți vedea de ce mai târziu.
Selectați scena jocului în vizualizarea Project și duplicați-o folosind comanda Ctrl / Command + D, apoi redenumiți copia în "meniu" și faceți dublu clic pe ea pentru ao deschide.
Notă: Puteți confirma scena deschisă, verificând partea de sus a ecranului, ar trebui să spuneți ceva de genul "Unitate - meniu.unitate - ProjectName - Web Player / Stand Alone". Nu doriți să începeți să ștergeți piesele accidental de pe scena jocului!
Acum selectați și ștergeți GUI și PickupSpawnPoints GameObjects din Ierarhie. Extindeți "Playerul" și trageți "Camera principală" astfel încât să nu mai fie copil al Playerului, apoi să ștergeți Playerul.
Apoi, selectați terenul și eliminați Componenta de coliziune a terenului făcând clic dreapta și selectând Eliminare componentă.
În cele din urmă, selectați "Camera principală" și eliminați Componenta MouseLook făcând clic dreapta și selectând Eliminați componenta.
Dacă executați jocul, acum nu trebuie să se întâmple nimic și nu ar trebui să vă puteți mișca deloc. daca tu poate sa mutați sau rotiți apoi repetați pașii de mai sus.
În momentul în care construiți sau jucați jocul dvs., singurul nivel inclus în acea construcție este scena "jocului". Aceasta înseamnă că scena meniului nu va apărea niciodată. Pentru a putea testa meniul nostru, vom regla acum setările de construire.
Din meniul de sus selectați File> Build Settings și trageți scena meniului din Project View în lista "Build Scenes Build" din Setări de construcție, după cum se arată mai jos
(Asigurați-vă că ați rearanjat scenele pentru a pune "menu.unity" în partea de sus, astfel încât este scena care este încărcată mai întâi atunci când jocul este jucat.)
Perfect!
Vom folosi textul 3D pentru meniul nostru, deci mergeți mai departe și creați un 3D Text GameObject prin meniul de sus: GameObject> Create Other> 3D Text, apoi redenumiți-l "PlayBT". Setați rotirea Y a textului PlayBT pentru a se potrivi cu valoarea rotației Y a camerei dvs. principale, astfel încât să fie îndreptată direct spre ea și, prin urmare, ușor de citit.
Cu ajutorul butonului PlayBT selectat, modificați proprietatea textului Text Mesh din Hello World la "Play", reduceți dimensiunea caracterelor la 0.1 și măriți dimensiunea fontului la 160 pentru a face textul mai clar.
Notă: dacă doriți să utilizați un font diferit de cel implicit, fie să selectați fontul înainte de a crea textul 3D, fie să trageți fontul pe proprietatea TextText a lui TextMesh și apoi să trageți fonturile "Font Material" pe lista Materiale Renderers Mesh, suprascrierea materialul Font existent. Foarte greu, știu!
În cele din urmă, adăugați un Box Collider prin meniul de sus: Component> Physics> Box Collider. Redimensionați caseta Collider pentru a se potrivi textului dacă nu se potrivește frumos.
În acest moment în tutorial trebuie să aveți în același timp atât vizionarea Scenei, cât și vizionările jocului, în același timp, de vreme ce acum doriți să mutați PlayBT în Vizualizarea Scenei astfel încât să fie centrat în vizualizarea dvs. de joc, după cum se arată mai jos. Vă recomandăm să o poziționați în poziție orizontală folosind o vizualizare de sus în jos și apoi să reveniți la utilizarea unei vizualizări în perspectivă pentru ao poziționa vertical utilizând mânerele axelor.
Deci asta este butonul nostru Play. Acum hai să ne jucăm!
Creați un nou script JavaScript în folderul dvs. de scripturi, redenumiți-l "MenuMouseHandler" și adăugați-l ca o componentă a GameBoard PlayBT fie prin glisarea direct pe PlayBT, fie selectând PlayBT și trăgând scriptul pe inspectorul său.
Înlocuiți codul implicit cu următoarele:
/ ** Mouse Down Event Handler * / funcția OnMouseDown () // dacă am făcut clic pe butonul de redare dacă (this.name == "PlayBT") // încărcați jocul Application.LoadLevel ("game");
Folosim funcția MonoBehavior OnMouseDown (...), invocată de fiecare dată când mouse-ul este clic pe BoxCollider. Verificăm dacă butonul pe care se face clic se numește "PlayBT" și, dacă este așa, vom folosi Application.LoadLevel (...) pentru a încărca scena "joc".
Discuție suficientă - du-te rulați-o și urmăriți-vă jocul veniți la viață când faceți clic pe Redați!
Notă: dacă faceți clic pe Redați și vă aflați cu o eroare de setare a setărilor, nu vă îngrijorați; trebuie doar să verificați setările de configurare - revizuiți Pasul 4.
Deci, meniul pentru a începe jocul este minunat, dar jocul tehnic nu se termină niciodată de când nu se întâmplă nimic în timp ... să rezolvăm acum.
Deschideți scriptul CountdownTimer și în partea de jos a ferestrei Tick ()
adăugați următoarea linie:
Application.LoadLevel ( "meniu");
Acum re-executați jocul dvs. și, atunci când timpul de expirare va fi luat înapoi la meniu! Easy Peasy!
Acolo mergem - un meniu de bază adăugat la jocul nostru. Acum, permiteți-i să fie mai ușor de utilizat cu ajutorul unui ecran de ajutor pentru a explica cum să jucați.
Butonul de ajutor este identic cu PlayBT în practică în orice mod, deci mergeți în continuare și duplicați PlayBT, redenumiți-l la HelpBT și poziționați-l sub butonul Play. Ajustează text proprietatea de a spune "Ajutor", mai degrabă decât "Joacă" și poate face dimensiunea fontului puțin mai mică, după cum se arată mai jos - Am folosit 100.
Deschideți acum scriptul MenuMouseHandler și adăugați următoarele altfel dacă
blocați la existența dvs. dacă
afirmație.
// dacă am făcut clic pe butonul de ajutor altceva dacă (this.name == "HelpBT") // rotiți camera pentru a vedea pagina de ajutor "
Dacă bifați previzualizarea, veți vedea că atunci când faceți clic pe Ajutor camera rotește în jur pentru a afișa meniul de ajutor. Deci, cum facem asta??
Rotația camerei noastre poate fi făcută frumos și curat într-o singură linie, grație tehnologiei iTween. Fără viață, nu ar fi la fel de distractivă. Așa cum denotă numele, este un motor de tweening, construit pentru unitate. Este, de asemenea, gratuit.
Continuați și deschideți iTween în cadrul magazinului Unity Asset, apoi faceți clic pe Download / Import și importați totul în proiectul dvs. Odată ce ați importat, trebuie să mutați iTween / plugins director în rădăcina dvs. bunuri pliant.
Acum sunteți pregătiți pentru a vă întrerupe viața!
Luați o bucată de hârtie și un stilou (sau deschideți un document gol) și notați valoarea de rotație Y a camerei principale, așa cum este cuprinsă mai jos.
În scenă, rotiți camera în jurul oricărei direcții în jurul axei Y, astfel încât textul Play și Ajutor să nu fie vizualizat și astfel să aveți un fundal decent pentru pagina dvs. de ajutor. Puteți vedea a mea de mai jos: am rotit de la -152 la -8.
Reveniți la scriptul MenuMouseHandler și adăugați următoarea linie în cadrul altfel dacă
afirmație:
iTween.RotateTo (Camera.main.gameObject, Vector3 (0, -8, 0), 1.0);
Utilizăm Camera.main pentru a prelua camera din camera (definită de eticheta "MainCamera") din scenă și utiliza iTween.RotateTo (...) pentru a roti camera într-un anumit unghi - în cazul meu -8
.
(Trebuie să înlocuiți -8
în linia de mai sus, cu rotația curentă a camerei dvs.)
Acum, du-te înapoi la scenă și întoarce-ți camera înapoi la rotația originală pe care ai scris-o la începutul acestei secțiuni, astfel încât să se confrunte cu PlayBT. Rulați jocul, faceți clic pe Ajutor și camera trebuie să se rotească în jur. peți!
Notă: Dacă primiți o eroare despre faptul că nu există, atunci nu l-ați importat corect - revedeți Pasul 9.
Acum, să construim pagina noastră de ajutor.
Rotiți camera înapoi în rotația Y a paginii de ajutor - în cazul meu -8
.
Acum vom adăuga un mic text de explicație, precum și un text mai mult pentru a explica diferitele pickups și scorurile lor. În cele din urmă, vom adăuga un buton Înapoi pentru a reveni la meniul principal. Puteți aranja pagina dvs. în orice fel doriți, astfel încât să vă simțiți liberi să deveniți creativi. Începem…
Duplicați HelpBT, redenumiți-o cu ajutorul HelpHeader, setați rotația la cea a camerei dvs., modificați valoarea Anchor la "center-ul superior" și reduceți dimensiunea fontului - am folosit 60.
Apoi copiați și inserați paragraful de mai jos în text
proprietate:
"Colecta cât mai multe cuburi pe măsură ce poți, în limita de timp.
Ferește-te, totuși, se schimbă în timp!
Notă: este important să rețineți că nu puteți scrie text în mai multe linii în proprietatea textului; trebuie să-l tastați într-un alt program și apoi să-l copiați și să-l lipiți de la apăsarea enter / return alocă câmpul.
În cele din urmă, eliminați Colaționatorul casetei și componentele MenuMouseHandler în cadrul inspectorului, deoarece nu va trebui să faceți clic pe acest text. Sperăm că veți termina cu ceva de genul:
Trageți acum un prefab de preluare în scenă și poziționați-l pe ecran. Mi-am pus pe mine așa cum am arătat mai jos.
Apoi, duplicați HelpHeader-ul, redenumiți-l la HelpPowerups, schimbați ancora în "superior-stânga" și copiați și inserați paragraful de mai jos în câmpul de text.
"Verde: + 2 Puncte
Roz: +/- Puncte aleatoare
Albastru: Viteză de viteză aleatorie "
Repoziționați-l astfel încât să aveți ceva de genul cel de mai jos.
Tot ce a mai rămas acum este să adăugați un buton Înapoi pentru a reveni la meniul principal.
Duplicați HelpBT, redenumiți-l BackBT, schimbați textul în "Back", setați rotația la cea a aparatului foto și utilizați Vizualizarea scenelor pentru ao repoziționa în Vizualizare joc. Mi-am pus a mea în colțul de jos, după cum se arată aici:
Acum, trebuie doar să actualizăm scriptul MenuMouseHandler pentru a gestiona și clicurile de pe mouse-ul din BackBT. Adăugați următoarele altfel dacă
blocați în partea inferioară a Onmousedown ()
dacă
declaraţii:
// dacă am făcut clic pe butonul Înapoi dacă (this.name == "BackBT") // rotiți camera pentru a vizualiza meniul "pagina" iTween.RotateTo (Camera.main.gameObject, Vector3 (0, -152, 0), 1,0);
Acest lucru este aproape identic cu declarația precedentă iTween, singura diferență fiind unghiul în care este rotit camera - -152
În cazul meu. Trebuie să schimbați acest număr la rotația originală Y a camerei dvs. a fost (cea pe care ați scris-o, vă amintiți?)
Acum, tot ce trebuie să faceți, setați camera înapoi la rotația inițială - valoarea pe care tocmai ați adăugat-o în instrucțiunea iTween - astfel încât să se îndrepte din nou spre meniul principal.
Rulați jocul și aparatul foto trebuie să se rotească pentru a dezvălui pagina de ajutor și a reveni înapoi în meniul principal. Felicitări, ați terminat!
Sper că v-ați bucurat de această sesiune de inițiere cu unitate!
În această parte am acoperit folosind GameObjects ca elemente de meniu și biblioteca incredibil de puternic tweening, iTween.
Dacă doriți o provocare suplimentară, încercați să utilizați iTween pentru a modifica culoarea textului pe MouseOver și apoi din nou pe MouseExit. (Veți găsi o listă de utilizatori de manipulare a mouse-ului pe această pagină.)
Sau adăugați un iTween CameraFade și apoi deconectați-l când cronometrul se termină, atunci încărcați apoi meniul - mai degrabă decât terminând brusc jocul. Apoi, puteți întârzia apelul către Application.LoadLevel (...)
utilizând randament WaitForSeconds (...)
.
Dați-mi voie să știți cum vă aduceți observațiile!