Dezvoltați un joc 3D cu Skee cu unitatea

Ce veți crea

Introducere

În acest tutorial, veți învăța cum să creați un joc 3D mobil utilizând C # și Unity. Obiectivul jocului este de a arunca mingea în găuri cu ajutorul ecranului tactil.

Veți învăța despre următoarele aspecte ale dezvoltării jocului Unity în acest tutorial:

  • importând modele 3D
  • glisați controalele gestului
  • clasa de comunicare
  • forțele fizicii
  • declanșează agenții de căutare

1. Creați un proiect de unitate nouă

Deschideți Unitatea și selectați Proiect nou de la Fişier meniu pentru a deschide dialogul de proiect nou. Spuneți unității unde doriți să salvați proiectul și setațiConfigurați valorile prestabilite pentru: meniu la 3D.

2. Construiți setările

În pasul următor, vă prezentați interfața de utilizator a Unity. Setați proiectul pentru dezvoltarea mobilă, alegând Construiți setările de la Fişier meniu și selectarea platformei dvs. de alegere.

3. Dispozitive

Primul lucru pe care trebuie să-l facem după selectarea platformei țintă este alegerea dimensiunii operei de artă pe care o vom folosi în joc. Acest lucru ne va ajuta să selectăm o dimensiune adecvată pentru texturile 3D și pentru interfața grafică 2D, fără a face ca lucrarea să fie neclară sau să utilizeze texturi prea mari pentru dispozitivul țintă. De exemplu, operele de artă trebuie să aibă o rezoluție mai mare dacă direcționați un iPad cu un afișaj al retinei decât un Lumia 520.

iOS

  • iPad fără retină: 1024px x 768px
  • iPad cu Retina: 2048px x 1536px
  • 3.5 "iPhone / iPod Touch fără retină: 320 x 480 pixeli
  • 3.5 "iPhone / iPod cu retină: 960px x 640px
  • 4 "iPhone / iPod Touch: 1136px x 640px

Android

Deoarece Android este o platformă deschisă, există o gamă largă de dispozitive, rezoluții de ecran și densități de pixeli. Câteva dintre cele mai obișnuite sunt enumerate mai jos.

  • Tableta Asus Nexus 7: 800px x 1280px, 216 ppi
  • Motorola Droid X: 854 px × 480 px, 228 ppi
  • Samsung Galaxy SIII: 720px x 1280px, 306 ppi

Windows Phone și BlackBerry

  • Blackberry Z10: 720px x 1280px, 355 ppi
  • Nokia Lumia 520: 400px x 800px, 233 ppi
  • Nokia Lumia 1520: 1080px x 1920px, 367 ppi

Rețineți că codul pe care îl vom scrie în acest tutorial poate fi folosit pentru a viza oricare dintre platforme.

4. Export Graphics

În funcție de dispozitivele pe care le vizați, este posibil să fie necesar să convertiți opera de artă la dimensiunea și densitatea pixelilor recomandată. Puteți face acest lucru în editorul dvs. de imagine preferat. Am folosit-o Reglați dimensiunea ...  funcția în cadrul Unelte în meniul OS X previzualizare cerere.

5. Interfață utilizator unitate

Înainte de a începe, asigurați-vă că 2D buton în Scenă panoul nu este evidențiat. De asemenea, puteți modifica rezoluția care este afișată în Joc panou.

Apoi sunteți prezentat cu panourile de spațiu de lucru, pe care le vom folosi și în acest tutorial. Ia-ți un moment să te uiți la panourile de interfață principale, cum ar fi Scenă, Joc, Ierarhie, Proiect, bunuri, și Inspector. Le vom folosi frecvent în acest tutorial.

6. Interfața jocurilor

Interfața de utilizare a jocului este simplă. Imaginea de mai jos vă oferă o imagine a lucrării pe care o vom folosi și a modului în care interfața finală a utilizatorului va sfârși. Puteți găsi opere de artă și resurse suplimentare în fișierele sursă ale tutorialului pe GitHub.

7. Limba de programare

Puteți folosi una dintre cele trei limbi de programare atunci când utilizați Unity, C #UnityScript, o variantă de JavaScript și nuu. Fiecare limbaj de programare are avantajele și dezavantajele sale și depinde de tine să decideți care dintre ele preferați. Preferința mea personală este limba limbajului de programare C #, deci este limba pe care o folosesc în acest tutorial.

Dacă vă decideți să utilizați un alt limbaj de programare, asigurați-vă că ați aruncat o privire asupra exemplei Unity's Script Reference.

8. Efecte de sunet

Voi folosi o serie de sunete pentru a îmbunătăți experiența audio a jocului. Efectele sonore folosite în acest tutorial au fost obținute de la PlayOnLoop și Freesound.

9. Modele 3D

Pentru a crea acest joc, trebuie mai întâi să obținem câteva modele 3D. Vă recomandăm 3docean pentru modele de înaltă calitate și texturi, dar dacă testați sau învățați, atunci modelele gratuite vor funcționa la fel de bine. Modelele din acest tutorial au fost descărcate de la SketchUp 3D Warehouse unde puteți găsi o gamă largă de modele 3D.

Deoarece Unity nu recunoaște formatul de fișier SketchUp, trebuie să îl convertim în ceva ce poate fi importat de Unity. Mai întâi trebuie să descărcăm versiunea gratuită a SketchUp, numită SketchUp Make.

Deschideți modelul 3D din SketchUp Make, selectați Export> Model 3D de la Fişier meniu și alegeți Collada (* .dae). Alegeți un nume și o locație și faceți clic pe Salvați. Acest lucru va crea un fișier și un dosar pentru modelul 3D. Fișierul conține datele pentru obiectul 3D în timp ce folderul conține texturile modelului. În etapa următoare, vom importa modelul în Unity.

10. Importați active

Înainte de a începe codificarea, trebuie să adăugăm activele proiectului Unity. Puteți face una din următoarele căi:

  • Selectați Importați un nou activ de la bunuri meniul
  • trageți și plasați activele în fereastra proiectului
  • adăugați elementele în dosarul de materiale al proiectului

După finalizarea acestui pas, ar trebui să vedeți activele din proiectul dvs. bunuri dosar în Proiect panou.

11. Instalați camera

Înainte de a continua, să poziționăm camera principală pentru a crea vizualizarea dorită. Selectați camera principală din Ierarhie panou și reglați Transforma valori în Inspector pentru a se potrivi cu cele prezentate mai jos.

Nu vă faceți griji dacă nu vedeți nicio modificare. Nu am creat nimic pentru ca camera să vadă încă.

12. Adăugarea luminii

Pentru ca obiectele noastre să fie vizibile în lumea 3D, trebuie să adăugăm lumină în scenă. Selectați Creați altele de la GameObject meniu și selectați Lumină direcțională. Acest lucru va crea un obiect care produce un fascicul de lumină. Schimbă-l Transforma valorile afișate în următoarea captură de ecran pentru a ilumina zona.

Lumina trebuie să fie vizibilă pe scenă, după cum se arată în următoarea imagine.

13. Adăugați Bowlers alley

Jucătorii de alei sunt principalele componente ale scenei jocului. Jucătorul va folosi ecranul tactil pentru a arunca o minge, urmărind unul dintre găuri.

Modelul folosit în acest tutorial a fost descărcat și importat utilizând metoda descrisă în Pasul 9.

Chiar dacă vom adăuga trei modele la scenă, jocul va interacționa doar cu cel din centru. Trageți și plasați o instanță a modelului pe Scenă sau Ierarhie panou și schimbați-l Transforma valori la cele afișate în imaginea de mai jos.

Utilizați aceeași metodă pentru a adăuga celelalte două instanțe sau duplicați prima instanță apăsând Command-D. Folosește Instrumente de transformare pentru a le poziționa după cum se arată mai jos.

14. Creați Colliders

Cu aleea principală în loc, este timpul să adăugăm aglomerații modelului pentru a ne ajuta să mutăm mingea pe suprafața sa. Deoarece acesta este un model complex cu multe grupuri și poligoane, ne-ar lua mult timp să identificăm diferitele forme și să adăugăm un ciocnire fiecăruia dintre ele. Pentru a face acest pas mai ușor, vom folosi un script de terță parte pentru a crea automat un collider care să se potrivească modelului nostru.

Scriptul va adăuga un nou element de meniu numit Wizards la meniul Unitate. Selectați modelul la care doriți să adăugați colizorul și selectați Adăugați Colliders Mesh de la Wizards meniul. Aceasta va aduce următoarea fereastră.

Clic Adăugați agenți de coliziune în partea dreaptă jos pentru a adăuga agenți de coliziune la model. Acest lucru va crea o Mesh Collider pentru fiecare grup sau obiect al modelului. Puteți verifica acest lucru prin extinderea ballbowler model în Ierarhie și selectarea unui element.

15. Sofite

Am adăugat o sursă de lumină în lumea noastră 3D, dar avem nevoie de puțină lumină pentru a face scena mai interesantă. Facem acest lucru prin adăugarea unui număr de spoturi.

Selectați Creați altele de la GameObject meniu și selectați Reflector. Acest lucru va crea un obiect care produce un fascicul de lumină îndreptat către un punct. Primul reflector pe care îl adăugăm trebuie să ilumineze găurile. Schimbă-l Transforma valori după cum se arată în următoarea imagine de ecran.

Adăugați un al doilea spot folosind următoarele valori de transformare.

16. Ball

Mingea este cea mai importantă componentă a jocului. Jucătorul va folosi ecranul tactil pentru a încerca să obțină mingea într-unul dintre găuri.

Bilele vor fi simple Sferă primitiv. Selectați Creați Altele> Sferă de la GameObject meniu pentru a crea primitivul și a modifica Transforma valori în Inspector așa cum se arată mai jos.

Vom converti mingea la a prefabricat mai târziu, deoarece ne va ajuta să creăm instanțe ale codului. Dar mai întâi, să adăugăm a Corp rigid la el.

17. Ball RigidBody

Pentru a detecta o coliziune cu mingea, trebuie să atașăm a Corp rigid la el. Pentru a adăuga una, selectați Adăugați componenta de la Inspector panou, urmat de Fizică > Corp rigid. Puteți lăsa setările la valorile implicite.

18. Senzori de bile

Trebuie să detectăm când mingea cade într-o gaură. Vom folosi Trigger Colliders în acest scop. Un collider de declanșare este un obiect fizic care detectează o coliziune cu un alt obiect fără a reacționa fizic. Acest lucru ne va ajuta să detectăm momentul în care mingea intră în gaură fără a face să se învârtă înapoi.

Deoarece nu avem nevoie de un model real sau de un grafic 2D pentru a face acest lucru, vom crea un Empty GameObject. Selectați GameObject> Creare gol din bara de meniu pentru ao crea. Apasă pe Adăugați componenta buton în Inspector și selectați Fizică> Collider de casetă.

Aceasta va adăuga un obiect de coliziune la obiectul jocului. Repetați acest proces pentru fiecare gaură și asigurați-vă că verificați trăgaci Caseta de bifat.

Poziționați coliziunea așa cum se arată în imaginea de mai jos.

19. Tabloul de bord

Pentru a afișa tabloul de bord al jocului, vom folosi Texturile GUI ale Unity. Implicit, imaginile importate la bunuri folderul sunt convertite în Textură instanțe care pot fi aplicate obiectelor 3D. Trebuie să schimbăm aceste lucruri Textură cazuri la GUI Textura instanțe pentru imaginile pe care dorim să le folosim în interfața de utilizator a jocului.

Selectați imaginea pe care doriți să o convertiți în bunuri și deschideți Inspector. Selectați GUI de la Textură tip meniul.

Acum puteți glisa și fixa imaginea pe Scenă. Imaginea va apărea întotdeauna în fața fiecărui obiect de pe scenă și va fi tratată ca un element 2D.

20. Textul tabloului de bord

În interiorul elementului GUI de pe tabloul de bord, vom afișa numerele care indică scorul jucătorului și numărul de bile pe care le-a lăsat jucătorul.

Selectați Creați alte> Text GUI de la GameObject pentru a crea un obiect text, așezați-l în centrul elementului GUI și modificați textul în Ierarhie panou la 00. Urmați același proces pentru textul bilelor pentru a completa tabloul de bord.

21. Adăugarea de scripturi

E timpul să scriem un cod. Cu interfața cu utilizatorul, putem începe să scriem codul necesar pentru a adăuga interacțiunea cu jocul. Facem acest lucru prin intermediul unor scripturi, care pot fi atașate obiectelor de joc. Urmați pașii următori pentru a afla cum să adăugați interacțiunea la nivelul pe care tocmai l-am creat.

22. Clasa ThrowBall

Pasul 1: Declarația variabilelor

Vom începe prin crearea clasei care gestionează majoritatea mecanicii jocurilor. Selectați camera principală, faceți clic pe Adăugați componenta buton în Inspector și selectați Script nou. Denumiți scenariul ThrowBall și nu uitați să schimbați limba în C #. Deschideți fișierul nou creat și adăugați următorul fragment de cod.

utilizând UnityEngine; utilizând System.Collections; clasa publică ThrowBall: MonoBehavior privat Vector3 throwSpeed ​​= Vector3 nou (0, 0, 1100); public GameObject ballReference; privat Vector2 startPos; Vector2 endPos privat; particulă vector2 minDistance = vector2 nou (0, 100); private Vector ballPos = Vector3 nou (0, 0.38f, -11.41f); publice bool ballOnStage = false; public int ballsLeft = 5; public GUIText ballsTextReference; public AudioClip throwSound;

Începem prin crearea unui număr de variabile pe care le vom folosi în joc. Să aruncăm o privire la fiecare.

  • throwSpeed: viteza inițială a mingii când este pusă pe alee
  • ballReference: o referire la prefabricatul cu bile, setat în inspector
  • startPos: poziția de început a primei atingeri, utilizată pentru a detecta un gest de glisare
  • endPos: poziția finală a atingerii
  • minDistance: mișcarea minimă necesară pentru ca degetul să fie considerat o lovitură
  • ballPos: poziția inițială a mingii
  • ballOnStage: Adevărat atunci când o minge este în prezent pe alee, pentru a preveni mai multe fotografii în același timp
  • ballsLeft: numărul de bile rămase
  • ballsTextReference: trimitere la câmpul de texte din bile, setat în inspector
  • throwSound: trimiterea la sunetul jucat atunci când mingea este aruncată, stabilită în inspector

Pasul 2: Detectarea atingerilor

Următorul fragment de cod arată începutul Actualizați metodă. Această metodă detectează dacă utilizatorul atinge ecranul.

void Actualizare () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0);

Verificăm touchCount proprietate a Intrare pentru a obține numărul actual de atingeri pe ecran. Dacă touchCount este mai mare decât 0, păstrăm o referință la prima Atingere obiect. Vom folosi acest obiect mai târziu.

Pasul 3: Detectarea unei lovituri rapide

Cu referire la Atingere obiect, avem acces la ei fază proprietate, care ne ajută să determinăm dacă atingerea a început, sa mutat sau sa încheiat.

Pentru că avem nevoie de un punct de pornire pentru a detecta un gest de glisare, avem nevoie de acces la punctul de plecare al Atingere obiect, la care avem acces atunci când Atingere obiecte fază este egal cu TouchPhase.Began. Poziția Atingere obiect este stocat în el poziţie proprietate.

Avem acces la punctul final al gestului accesând Atingere obiecte poziţie proprietate atunci când este fază proprietatea este egală cu TouchPhase.Ended.

dacă (touch.phase == TouchPhase.Began) startPos = touch.position;  dacă (touch.phase == TouchPhase.Ended) endPos = touch.position;  / * Comparați pozițiile * / dacă (endPos.y - startPos.y> = minDistance.y &&! BallOnStage && ballsLeft> 0) 

Acum, că avem coordonatele punctului de pornire și final al atingerii, putem calcula distanța și putem verifica dacă este un gest de glisare valabil prin compararea cu valoarea stocată în minDistance obiect.

De asemenea, verificăm valoarea ballOnStage pentru a verifica dacă o minge este deja pe scena și ne asigurăm că jucătorul are destule bile rămase pentru a continua jocul. Numărul de bile lăsate este stocat în ballsLeft variabil.

Pasul 4: Detectarea zonei ecranului

Zonele de ecran sunt create pentru a calcula unde va fi poziția orizontală a mingii atunci când mingea este creată. Noi facem acest lucru pentru a avea controlul asupra pozitiei mingii si ne spune unde se va termina balonul si nu va impiedica sa o aruncati afara. Împărțim ecranul în trei părți, după cum puteți vedea mai jos.


Matematica pe care o folosim este destul de simplă, după cum puteți vedea în blocul de cod de mai jos. Împărțim ecranul în trei părți egale și verificăm ce parte conține atingerea utilizatorului.

/ * Împărțiți ecranul în 3 părți * / / * Stânga * / dacă (touch.position.x> = 0 && touch.position.x <= Screen.width / 3)  ballPos.x = Random.Range(-0.87f, -0.35f);  /* Center */ else if(touch.position.x > Lățime ecran / 3 && touch.position.x <= (Screen.width / 3) * 2)  ballPos.x = Random.Range(-0.35f, 0.22f);  /* Right */ else if(touch.position.x > (Ecran / lățime / 3) * 2 && touch.position.x <= Screen.width)  ballPos.x = Random.Range(0.22f, 0.36f); 

După detectarea zonei corecte a ecranului, se calculează o poziție aleatorie între începutul și sfârșitul zonei și se atribuie acea poziție la ballPos variabil.

Pasul 5: Aruncarea mingii

După stabilirea poziției de plecare a mingii, vom crea un nou GameObject instanță folosind instantiat metoda, trecerea în ballReference și ballPos variabile.

GameObject ball = Instantiate (ballReference, ballPos, transform.ro) ca GameObject; ball.rigidbody.AddForce (throwSpeed);

Cu mingea de pe scena, adăugăm o forță pentru ao face să treacă prin aleea corectă. Facem asta invocând AddForce metoda de pe minge corp rigid proprietate, trecerea în throwSpeed variabilă am declarat mai devreme.

Pasul 6: Redarea unui efect de sunet

Jucăm un efect sonor atunci când mingea este aruncată în alee. Următorul rând de cod are grijă de asta. Pentru această activitate, nu uitați să setați throwSound variabilă în Inspector.

AudioSource.PlayClipAtPoint (throwSound, transform.position);

Pasul 7: Resetarea variabilelor cu glisare

După ce aruncăm mingea, trebuie să resetăm variabilele care detectează atingerile jucătorului. Făcând acest lucru nu s-ar determina detectarea mai multor rachete. Am setat și ballOnStage variabil la Adevărat, împiedicând ca o altă minge să fie aruncată în același timp.

endPos = Vector2 nou (0, 0); startPos = Vector2 nou (0, 0); ballOnStage = adevărat;

Acest lucru completează ThrowBall clasă. Punerea în aplicare a clasei ar trebui să arate ca cea prezentată mai jos.

utilizând UnityEngine; utilizând System.Collections; clasa publică ThrowBall: MonoBehavior privat Vector3 throwSpeed ​​= Vector3 nou (0, 0, 1100); public GameObject ballReference; privat Vector2 startPos; Vector2 endPos privat; particulă vector2 minDistance = vector2 nou (0, 100); private Vector ballPos = Vector3 nou (0, 0.38f, -11.41f); publice bool ballOnStage = false; public int ballsLeft = 5; public GUIText ballsTextReference; public AudioClip throwSound; void Actualizare () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0); dacă (touch.phase == TouchPhase.Began) startPos = touch.position;  dacă (touch.phase == TouchPhase.Ended) endPos = touch.position;  / * Comparați pozițiile * / dacă (endPos.y - startPos.y> = minDistance.y &&! BallOnStage && ballsLeft> 0) / * Împărțiți ecranul în 3 părți * / / * Stânga * / if (poz. x> = 0 && touch.position.x <= Screen.width / 3)  ballPos.x = Random.Range(-0.87f, -0.35f);  /* Center */ else if(touch.position.x > Lățime ecran / 3 && touch.position.x <= (Screen.width / 3) * 2)  ballPos.x = Random.Range(-0.35f, 0.22f);  /* Right */ else if(touch.position.x > (Ecran / lățime / 3) * 2 && touch.position.x <= Screen.width)  ballPos.x = Random.Range(0.22f, 0.36f);  GameObject ball = Instantiate(ballReference, ballPos, transform.rotation) as GameObject; ball.rigidbody.AddForce(throwSpeed); AudioSource.PlayClipAtPoint(throwSound, transform.position); endPos = new Vector2(0, 0); startPos = new Vector2(0, 0); ballOnStage = true;    

Clasa BallSensor

Următorul script conține implementarea BallSensor clasă și este atașat senzorilor de bile, manipulând orice coliziune cu senzorii de bile.

Pasul 1: Declarația variabilelor

Începem prin declararea unei variabile numite sensorValue, care stochează numărul de puncte pe care senzorul de bilă îl va adăuga la scor. Deoarece senzorii de bilă sunt toți aceiași prefab, declarăm această variabilă ca fiind public. Aceasta ne va permite să setăm această valoare în editor folosind Inspector.

utilizând UnityEngine; utilizând System.Collections; clasa publică BallSensor: MonoBehavior public int sensorValue = 0; public GUIText scoreReference; public GameObject alertReference;

Celelalte două variabile stochează trimiteri la obiectele de joc scoase și alerte, pe care le-am stabilit și în Unity's Inspector. Aceste referințe vor fi folosite pentru a mări scorul și pentru a afișa alerta atunci când jocul se termină.

Pasul 2: distrugerea mingii

OnTriggerEnter metoda detectează când a avut loc o coliziune și acceptă Collider obiect senzorul se ciocnește cu mingea, în acest caz. Atunci când se detectează o coliziune, mingea este distrusă pentru a împiedica răsculat și potențial să cadă într-o altă gaură.

void OnTriggerEnter (altul Collider) Destroy (other.gameObject);

Pasul 3: Activarea aruncării

După ce am distrus mingea, suntem siguri că nu mai este pe alee. Aceasta înseamnă că putem arunca o altă minge fără a provoca un comportament nedorit. Următorul rând de cod comunică cu ThrowBall clasa și devine ballOnStage variabilă, setându-l la fals.

Camera.main.GetComponent() .ballOnStage = false;

Să aruncăm o privire mai atentă la modul în care accesăm o variabilă declarată într-o altă clasă. După cum puteți spune până acum, o modalitate de a accesa o variabilă sau un obiect declarat în afara clasei curente este să setați o variabilă de referință folosind public sau [SerializeField], și apoi utilizați Inspector pentru a da o valoare.

public cuvântul cheie joacă un rol important în acest sens. Utilizarea acestuia face ca variabila să nu fie accesibilă numai de la Inspector, dar și prin cod. Pentru a face acest lucru, avem mai întâi nevoie de acces la GameObject care are Script Component atașat la acesta, care este Camera principală în acest caz.

Există o singură cameră în acest joc, ceea ce face lucrurile mai ușoare. Putem trimite o referire la camera principală prin Camera.main. Utilizarea GetComponent primim scenariul atașat camerei, folosind numele clasei. Apoi avem acces la variabila publica numita ballOnStage.

Pasul 4: Schimbarea scorului

Următorul bloc de coduri actualizează scorul, folosind referința pe care am declarat-o mai devreme.

scoreReference.text = (int.Parse (scoreReference.text) + senzorValue) .ToString ();

Convertim valoarea stocată în scoreReference la un număr întreg și adăugați-l la valoarea stocată în sensorValue. Convertim rezultatul într-un șir și îl atribuim text proprietatea scoreReference.

Pasul 5: Actualizarea bilelor rămase

În acest pas, scădem numărul de bile rămase. Folosim metoda descrisă în Pasul 3 pentru a accesa ballsLeft și ballsTextReference variabile ale ThrowBall clasă.

Camera.main.GetComponent() .BallsLeft--; Camera.main.GetComponent() .ballsTextReference.text = Camera.main.GetComponent() .BallsLeft.ToString ();

Reducem valoarea stocată în ballsLeft și actualizați text proprietatea ballsTextReference.

Pasul 6: Verificarea jocului

Jocul se termină atunci când jucătorul nu mai dispune de fotografii disponibile. Următoarele linii de cod verifică dacă ballsLeft variabila este egală cu 0 și să creeze o alertă dacă Adevărat. Apoi chemăm Invoca metoda de a invoca Reîncarcă , care repornește jocul prin reîncărcarea scenei curente.

Al doilea parametru al Invoca Metoda definește întârzierea cu care Reîncarcă metoda va fi invocată. Facem acest lucru pentru a da jucătorului ceva timp înainte de a începe un nou joc.

 dacă (Camera.main.GetComponent() .ballsLeft == 0) Instanțiate (alertReference, noul Vector3 (0.5f, 0.5f, 0), transform.rotation); Invocați ("Reîncărcați", 3); 

Pasul 7: Reîncărcarea jocului

Aceasta este ultima parte din BallSensor clasă. În Reîncarcă metoda, suntem LoadLevel pe cerere clasa și reîncărcați nivelul actual, resetând fiecare obiect și variabilă la starea inițială.

 void Reload () Application.LoadLevel (Application.loadedLevel); 

Așa arată clasa când a terminat.

utilizând UnityEngine; utilizând System.Collections; clasa publică BallSensor: MonoBehavior public int sensorValue = 0; public GUIText scoreReference; public GameObject alertReference; void OnTriggerEnter (altul Collider) Destroy (other.gameObject); Camera.main.GetComponent() .ballOnStage = false; scoreReference.text = (int.Parse (scoreReference.text) + senzorValue) .ToString (); Camera.main.GetComponent() .BallsLeft--; Camera.main.GetComponent() .ballsTextReference.text = Camera.main.GetComponent() .BallsLeft.ToString (); dacă (Camera.main.GetComponent() .ballsLeft == 0) Instanțiate (alertReference, noul Vector3 (0.5f, 0.5f, 0), transform.rotation); Invocați ("Reîncărcați", 3);  void Reîncărcare () Application.LoadLevel (Application.loadedLevel); 

24. Testarea

Este timpul să testați jocul. presa Command-P pentru a juca jocul în Unitate. Dacă totul funcționează așa cum era de așteptat, atunci sunteți pregătiți pentru pașii finali.

25. Setările playerului

Când sunteți mulțumit de jocul dvs., este timpul să selectați Construiți setările de la Fişier meniu și faceți clic pe Setările playerului buton. Acest lucru ar trebui să aducă Setările playerului în Inspector panou în care puteți seta parametrii pentru aplicația dvs..

Aceste setări sunt date specifice aplicației care includ creatorul sau compania, modul de rezoluție a aplicațiilor și modul de afișare, modul de redare (CPU, GPU), compatibilitatea cu dispozitivele de sistem etc. Configurați setările în funcție de dispozitivele pe care le vizați și de magazin sau de pe piață intenționați să publicați aplicația.

26. Icoane și imagini splash

Folosind grafica pe care ați creat-o mai devreme, puteți crea acum o imagine irezistibilă și o imagine splash pentru jocul dvs. Unitatea vă arată dimensiunile necesare, care depind de platforma pe care o construiți.

27. Construiți și jucați


Odată ce proiectul dvs. este configurat corect, este timpul să revizuiți Construiți setările și faceți clic pe Construi Buton. Asta e tot ce este nevoie pentru a vă construi jocul pentru testare și / sau distribuție.

Concluzie

În acest tutorial, am învățat cum să folosim forțele fizice, gesticulele, comunicarea de clasă și alte aspecte ale dezvoltării jocurilor în Unitate. Vă încurajez să experimentați rezultatul și să personalizați jocul pentru a-l creați. Sper că ți-a plăcut acest tutorial și l-am găsit de ajutor.

Cod