Develop en 3D Skee ball spill med Unity 
 26 
 Del 
 5 
 Del 
 
 Dette Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av. 
 Hva du skal lage 
 Innledning 
 
 I denne opplæringen vil du lære hvordan du kan lage en mobil 3D-spill ved hjelp av C # og Unity. Målet med spillet er å kaste ballen inn i hullene ved hjelp av berøringsskjermen 
 
 Du vil lære om følgende aspekter av Unity spillutvikling i denne opplæringen. 
 
swipe gest styrer
klasse kommunikasjon
fysikk krefter
trigger colliders
1. Opprett et nytt Unity Prosjekt
 Åpne Unity og velg  Nytt prosjekt 
 fra  Fil 
 menyen for å åpne den nye dialogen prosjektet. Fortell Unity hvor du vil lagre prosjektet og sette  
  Sett opp standardverdier for:. 
 Menyen til  3D 
 
 2. Bygg Innstillinger 
 
 I neste trinn, du presentert med Unity brukergrensesnitt. Sette prosjektet opp for mobil utvikling ved å velge  Bygg Settings 
 fra  Fil 
 menyen og velge din foretrukne plattformen. 
 
 3. Enheter 
 
 Det første vi må gjøre etter å ha valgt målet plattformen er å velge størrelsen på grafikken vi skal bruke i spillet. Dette vil hjelpe oss med å velge en passende størrelse for 3D-teksturer og GUI 2D uten å gjøre kunstverket uskarpt eller bruke teksturer som er for store for målenheten. For eksempel trenger kunstverket til å ha en høyere oppløsning hvis du målretter en iPad med en retina-skjerm enn en Lumia 520. 
 
 iOS 
 
 iPad uten Retina: 1024px x 768px 
 
 iPad med Retina: 2048 piksler x 1536px 
 
 3,5 "iPhone /iPod Touch uten Retina: 320px x 480px 
 
 3,5" iPhone /iPod med Retina: 960 x x 640px 
 
 4 "iPhone /iPod Touch: 1136px x 640px 
 
 Android 
 
 Fordi Android er en åpen plattform, det er et bredt spekter av enheter, skjermoppløsninger, og pikseltetthet . Et par av de mer vanlige de er listet opp nedenfor 
 
 Asus Nexus 7 Tablet. 800px x 1280px, 216 ppi 
 
 Motorola Droid X: 854px x 480px, 228 ppi 
 
 Samsung Galaxy SIII: 720px x 1280px, 306 ppi 
 
 Windows Phone & Blackberry 
 
 Blackberry Z10: 720px x 1280px, 355 ppi 
 < li> Nokia Lumia 520: 400px x 800px, 233 ppi 
 
 Nokia Lumia 1520: 1080px x 1920px, 367 ppi 
 
 Merk at koden vi skal skrive i denne opplæringen kan være anvendes for å målrette en av plattformene. 
 
 4. Eksport Graphics 
 
 Avhengig av hvilke enheter du målretter, kan det hende du må konvertere grafikken til anbefalt størrelse og pikseltetthet. Du kan gjøre dette i din favoritt bilde editor. Jeg har brukt den  Juster størrelse ... 
 funksjon under  Verktøy 
 menyen i OS X  Forhåndsvisning 
 søknad. 
 
 5. Unity User Interface 
 
 Før vi kommer i gang, sørg for  2D 
 knappen i  Scene 
 panelet ikke er uthevet. Du kan også endre oppløsningen som blir vist i  Spill 
 panel. 
 
 Du er deretter presentert med arbeidsområde paneler, som vi også bruker i denne opplæringen. Ta deg tid til å se på de viktigste grensesnittet paneler, for eksempel  Scene 
,  Spill 
,  Hierarki 
,  Prosjekt 
,  Assets 
, og  Inspector 
. Vi vil bruke dem ofte i denne opplæringen. 
 
 6. Spill Interface 
 
 Brukergrensesnittet i spillet er grei. Skjermbildet nedenfor gir deg en idé om kunstverket vi skal bruke, og hvordan den endelige brukergrensesnittet vil ende opp som ser. Du kan finne illustrasjoner og tilleggsressurser i opplæringen sin kildefilene på GitHub. 
 
 7. Programming Language 
 
 Du kan bruke en av tre programmeringsspråk når du bruker Unity,  C # 
,  UnityScript 
, en variant av Javascript, og  Boo 
. Hver programmeringsspråk har sine fordeler og ulemper, og det er opp til deg å bestemme hvilken du foretrekker. Min personlige preferanse går til programmeringsspråket C #, så det er det språket jeg skal bruke i denne opplæringen. 
 
 Hvis du velger å bruke et annet programmeringsspråk, så sørg for å ta en titt på Unity sin Script Reference for eksempler . 
 
 8. Lydeffekter 
 
 Jeg skal bruke en rekke lyder å forbedre audial opplevelsen av spillet. Lydeffektene er brukt i denne opplæringen ble hentet fra PlayOnLoop og Freesound. 
 
 9. 3D-modeller 
 
 For å lage spillet, trenger vi først å få et par 3D-modeller. Jeg anbefaler 3docean for høy kvalitet modeller og teksturer, men hvis du tester eller læring, deretter gratis modeller vil fungere like fint. Modellene i denne opplæringen ble lastet ned fra SketchUp 3D-galleriet der du kan finne et bredt utvalg av 3D-modeller. 
 
 Fordi Unity ikke gjenkjenner SketchUp filformat, trenger vi å konvertere den til noe Unity kan importere. Vi må først laste ned gratis versjon av SketchUp, som kalles SketchUp Make 
 
 Åpne 3D-modell i SketchUp Lag, velg  Export >.; 3D Model 
 fra  Fil 
 menyen, og velg  Collada (* .dae) 
. Velg et navn og sted, og klikk  Lagre 
. Dette vil opprette en fil og en mappe for 3D-modellen. Filen inneholder data for 3D-objektet mens mappen inneholder modellens teksturer. I neste trinn, vil vi importere modellen i Unity. 
 
 10. Import Eiendeler 
 
 Før vi begynner koding, må vi legge eiendelene til Unity prosjektet. Du kan gjøre dette én av flere måter: 
 
 Velg  Import New Asset 
 fra  Eiendeler 
 menyen 
 
 dra og slippe eiendeler i prosjektvinduet 
 
 legge til elementer i prosjektet eiendeler mappe 
 
 Etter å ha fullført dette trinnet, bør du se verdiene i prosjektet ditt  mappe Eiendeler 
 i < b> Prosjekt 
 panel. 
 
 11. Kameraoppsett 
 
 Før vi fortsetter, la oss plassere hovedkameraet til å skape den utsikten vi ønsker. Velg hovedkameraet fra  Hierarki 
 panel og justere  Transform 
 verdier i  Inspektør 
 å matche de som er vist nedenfor. 
 
 Ikke bekymre deg hvis du ikke ser noen endringer. Vi har ikke skapt noe for kameraet å se ennå. 
 
 12. Legge Lys 
 
 For våre objekter for å være synlig i 3D-verden, må vi legge lys til scenen. Velg  Opprett Andre 
 fra  GameObject 
 meny og velg  Retnings Lys 
. Dette vil skape et objekt som frembringer en stråle av lys. Endre  Transform 
 verdier som vist i følgende skjermbilde for å gjøre det lyse opp området. 
 
 Lyset skal være synlig på scenen, som vist i følgende skjermbilde. 
 
 1. 3. Legg Alley Bowlers 
 
 The Alley bowlere er de viktigste komponentene i spillets scene. Spilleren vil bruke berøringsskjermen for å kaste en ball, sikter til et av hullene. 
 
 Modellen som brukes i denne opplæringen ble lastet ned og importeres ved hjelp av metoden beskrevet i  Trinn 9 
. 
 
 Selv om vi vil legge til tre modeller til scenen, stykket vil bare kommunisere med ett i sentrum. Dra og slipp en forekomst av modellen på  Scene 
 eller  Hierarki 
 panel og endre  Transform 
 verdier til de som er vist i skjermbildet nedenfor. 
 < p> Bruk samme metode for å legge de to andre instanser eller kopiere første omgang ved å trykke på  Kommando-D 
. Bruk  Transformasjonsverktøy 
 å posisjonere dem som vist nedenfor. 
 
 14. Opprett colliders 
 
 Med hoved smug på plass, er det på tide å legge colliders til modellen for å hjelpe oss med å flytte ballen over overflaten. Siden dette er en kompleks modell med mange grupper og polygoner, ville det ta oss lang tid å identifisere de ulike formene og legge en Collider til hver av dem. For å gjøre dette trinnet enklere, vil vi bruke en tredjeparts script for å automatisk lage en Collider som passer vår modell. 
 
 Skriptet vil legge til et nytt menyvalg som heter  Wizards 
 til Unity meny. Velg modellen som du vil legge til Collider og velg  Legg Mesh colliders 
 fra  Wizards 
 menyen. Dette vil få opp følgende vindu. 
 
 Klikk på  Legg colliders 
 lavt i høyre for å legge colliders til modellen. Dette vil skape en  Mesh Collider 
 for hver gruppe eller et objekt av modellen. Du kan kontrollere dette ved å utvide den  ballbowler 
 modell i  Hierarki Hotell og velge et element. 
 
 15. Spotlights 
 
 Vi har lagt en lyskilde til vår 3D-verden, men vi trenger litt mer lys for å gjøre scenen mer interessant. Vi gjør dette ved å legge en rekke spotlights. 
 
 Velg  Opprett Andre 
 fra  GameObject 
 meny og velg  Spotlight 
. Dette vil skape et objekt som frembringer en lysstråle rettet mot ett sted. Den første spotlight vi legge trenger å belyse hullene. Endre  Transform 
 verdier som vist i følgende skjermbilde. 
 
 
 
 16 Legg til et ekstra søkelys ved hjelp av følgende forvandle verdier.. Ball 
 
 Ballen er den viktigste komponenten i spillet. Spilleren vil bruke berøringsskjermen for å prøve og få ballen i et av hullene. 
 
 Ballen kommer til å være en enkel  Sphere 
 primitive. Velg  Opprett Andre > Sphere 
 fra  GameObject 
 menyen for å skape den primitive og endre  Transform 
 verdier i  Inspector 
 som vist nedenfor. 
 
 Vi vil konvertere skuddet til  Prefab 
 senere som det vil hjelpe oss med å lage forekomster av det i kode. Men først, la oss legge til en  RigidBody 
 til det. 
 
 17. Ball RigidBody 
 
 For å oppdage en kollisjon med ballen, må vi legge ved en  RigidBody 
 til det. For å legge til en, velger du  Legg til Component 
 fra  Inspector 
 panel, etterfulgt av  Fysikk 
 >  RigidBody 
. Du kan la innstillingene på standardverdiene. 
 
 18. Ball Sensorer 
 
 Vi trenger å oppdage når ballen faller ned i et hull. Vi vil bruke  Trigger colliders 
 for dette formålet. En trigger Collider er en fysikk objekt som oppdager en kollisjon med et annet objekt uten å reagere fysisk. Dette vil hjelpe oss oppdage når ballen går i hullet uten å gjøre det sprette tilbake. 
 
 Siden vi ikke trenger en faktisk modell eller 2D grafikk til å gjøre dette, vil vi lage en  Tøm GameObject 
. Velg  GameObject > Lag Empty 
 fra menylinjen for å lage den. Klikk på  Legg til Component 
 knappen i  Inspector Hotell og velg  Fysikk > Box Collider 
 
 
. Dette vil legge en boks Collider til spillet objektet. Gjenta denne prosessen for hvert hull og sørg for å sjekke  Trigger 
 sjekkheftet. 
 
 Plasser colliders som vist i skjermbildet nedenfor. 
 
 19. Scoreboard 
 
 For å vise spillets resultattavle, vil vi bruke Unity sin GUI Textures. Som standard er bilder som er importert til  mappe Eiendeler 
 konvertert til  Texture 
 forekomster som kan brukes til 3D-objekter. Vi må endre disse  Texture 
 forekomster til  GUI Texture 
 instanser for hvilke bilder vi vil bruke i spillets brukergrensesnitt. 
 
 Velg bildet du vil konvertere i  Eiendeler 
 panel og åpne  Inspector 
. Velg  GUI 
 fra  Texture Type 
 menyen. 
 
 Du kan nå dra og slippe bildet til  Scene 
. Bildet vil alltid vises foran alle objektene på scenen og vil bli behandlet som en 2D-element. 
 
 20. Scoreboard Text 
 
 Inne på resultattavlen GUI-elementet, viser vi tall som viser spillerens score og antall baller spilleren har forlatt 
 
 Velg  Opprett Andre >.; GUI Tekst 
 fra  GameObject 
 menyen for å lage et tekstobjekt, plasser den i midten av GUI-elementet, og endre teksten i  Hierarki 
 panelet til  00 
. Følg samme fremgangsmåte for baller teksten å fullresultattavlen. 
 
 21. Legge Scripts 
 
 Det er på tide å skrive noen kode. Med brukergrensesnittet på plass, kan vi begynne å skrive den nødvendige koden for å legge samhandling til spillet. Dette gjør vi ved hjelp av skript, som kan festes til spillobjekter. Følg de neste trinnene for å lære hvordan du legger samhandling til det nivået vi har nettopp opprettet. 
 
 22. ThrowBall Class 
 
 Trinn 1: Erklærte Variabler 
 
 Vi vil begynne med å lage den klassen som håndterer det meste av spillmekanikken. Velg hovedkameraet, klikker du på  Legg til Component 
 knappen i  Inspector 
 panelet, og velg  New Script 
. Navn manuset ThrowBall og ikke glem å endre språket til C #. Åpne den nyopprettede filen og legge inn følgende kode 
 hjelp UnityEngine, bruker System.Collections; public class ThrowBall. MonoBehaviour {private Vector3 throwSpeed = new Vector3 (0, 0, 1100); offentlig GameObject ballReference; private Vektor2 startPos; private Vektor2 endPos; privat Vektor2 minDistance = new Vektor2 (0, 100); privat Vector3 ballPos = new Vector3 (0, 0.38f, -11.41f); offentlig bool ballOnStage = false; public int ballsLeft = 5; offentlig GUIText ballsTextReference; offentlig AudioClip throwSound; 
 Vi starter med å lage en rekke variabler som vi vil bruke i spillet. La oss ta en titt på hver enkelt 
 
 throwSpeed. Den innledende hastighet på ballen når den plasseres på smuget 
 
 ballReference: en referanse til ballen ferdighus, satt i inspektøren 
 
 startPos: start posisjonen til den første kontakten, brukes til å oppdage en swipe gest 
 
 endPos: endestilling av berørings 
 
 minDistance: minimum behov for bevegelse for finger for å bli vurdert en sveip 
 
 ballPos: innledende ball posisjon 
 
 ballOnStage: sant når en ball er for tiden på smug, for å forhindre at flere skudd samtidig 
 
 ballsLeft: antall gjenværende baller 
 
 ballsTextReference: referanse til baller tekstfeltet, satt i inspektøren 
 
 throwSound: henvisning til lyden spilt når ballen er kastet, satt i inspektøren 
 < h3> Trinn 2: Registrere berører 
 
 Følgende kodebiten viser begynnelsen av oppdatering metoden. Denne metoden registrerer om brukeren berøre skjermen 
 void Update () {if (Input.touchCount > 0). {Touch berørings = Input.GetTouch (0); 
 Vi sjekker touchCount eiendommen av Input klasse for å få den nåværende antall berøringer på skjermen. Hvis touchCount er større enn 0, holder vi en referanse til den første Touch objektet. Vi vil bruke dette objektet senere 
 
 Trinn 3:. Oppdager en Swipe 
 
 Med en referanse til Touch objekt, har vi tilgang til sin fase eiendom, som hjelper oss å finne ut om kontakten har startet, flyttet, eller avsluttet. 
 
 Fordi vi trenger et utgangspunkt for å oppdage en swipe gest, må vi ha tilgang til startpunktet for Touch objektet, som vi har tilgang til når Touch objektets fasen er lik TouchPhase.Began. Posisjonen til Touch objektet er lagret i sin posisjon eiendom. 
 
 Vi har tilgang til endepunktet for den gesten ved å gå til Touch objektets posisjon eiendom når sin fase eiendom er lik TouchPhase.Ended. 
 Hvis (touch.phase == TouchPhase.Began) {startPos = touch.position;} if (touch.phase == TouchPhase.Ended) {endPos = touch.position;} /* sammenlign stillinger * /if (endPos.y - startPos .Y > = minDistance.y & & ballOnStage &! & ballsLeft > 0) {
 Nå som vi har koordinatene til start og endepunkt av touch, kan vi beregne avstanden og sjekke om det er en gyldig swipe gest ved å sammenligne den med den verdien som er lagret i minDistance objektet. 
 
 Vi har også inspisere verdien av ballOnStage å kontrollere om en ball er allerede på scenen og vi sørge for at spilleren har nok baller igjen å fortsette å spille. Antall kuler igjen lagres i ballsLeft variable 
 
 Trinn 4:. Oppdager Skjerm Zone 
 
 Skjerm soner er opprettet for å beregne hvor den horisontale posisjonen til ballen kommer til å være når Ballen er opprettet. Vi gjør dette for å ha kontroll over ballens posisjon og det forteller oss hvor ballen kommer til å ende, og hindre kaste den ut av banen. Vi deler skjermen i tre deler som du kan se nedenfor. 
 
 Den matte vi bruker er ganske enkelt som du kan se i koden blokken nedenfor. Vi deler skjermen i tre like deler og sjekke hvilken del inneholder brukerens berørings 
 /* Divide skjermen i 3 deler * //* Venstre * /if (touch.position.x >. = 0 & & touch.position.x < = Screen.width /3) {ballPos.x = Random.Range (-0.87f, -0.35f);} /* Center * /else if (touch.position.x > Screen.width /3 & & touch.position.x < = (Screen.width /3) * 2) {ballPos.x = Random.Range (-0.35f, 0.22f);} /* Høyre * /else if (touch.position.x > (Screen.width /3) * 2 & & touch.position.x < = Screen.width) {ballPos.x = Random.Range (0.22f, 0.36f);} 
 Etter å detektere riktig skjermsone, beregner vi en tilfeldig posisjon mellom starten og slutten av sonen og tilordne den posisjonen til ballPos variable 
 
 Trinn 5: kaste ballen 
 <. p> Etter å bestemme startposisjonen av ballen, skaper vi en ny GameObject forekomst ved hjelp av instantiate metoden, passerer i ballReference og ballPos variabler 
 GameObject ball = instantiate (ballReference, ballPos, transform.rotation) som GameObject;. ball .rigidbody.AddForce (throwSpeed); 
 Med ballen på scenen, legger vi en kraft til å gjøre det gå gjennom riktig smug. Vi gjør dette ved å påberope seg AddForce metoden på ballens rigidbody eiendom, passerer i throwSpeed variable vi erklært tidligere 
 
 Trinn 6:. Spille en Sound Effect 
 
 Vi spiller en lydeffekt når ballen kastes i smug. Den neste kodelinje tar seg av det. For dette tot arbeid, må du huske å sette throwSound variabel i  Inspector 
 AudioSource.PlayClipAtPoint (throwSound, transform.position); 
 Trinn 7:. Tilbake swipe Variabler 
 
 Etter å kaste ballen, må vi nullstille variabler som gjenkjenner spillerens innslag. Ikke gjør dette vil resultere i flere swipes å bli oppdaget. Vi har også satt den ballOnStage variabelen til true, hindre at en annen ball er kastet samtidig 
 endPos = new Vektor2 (0, 0);. StartPos = new Vektor2 (0, 0); ballOnStage = true; 
 Dette fullfører ThrowBall klassen. Gjennomføringen av klassen skal se ut th vist under 
 hjelp UnityEngine, bruker System.Collections; public class ThrowBall. MonoBehaviour {private Vector3 throwSpeed = new Vector3 (0, 0, 1100); offentlig GameObject ballReference; private Vektor2 startPos; private Vektor2 endPos; privat Vektor2 minDistance = new Vektor2 (0, 100); privat Vector3 ballPos = new Vector3 (0, 0.38f, -11.41f); offentlig bool ballOnStage = false; public int ballsLeft = 5; offentlig GUIText ballsTextReference; offentlig AudioClip throwSound; void Update () {if (Input.touchCount > 0) {Touch berørings = Input.GetTouch (0); if (touch.phase == TouchPhase.Began) {startPos = touch.position; } If (touch.phase == TouchPhase.Ended) {endPos = touch.position; } /* Sammenlign stillinger * /if (endPos.y - startPos.y >! = MinDistance.y & & ballOnStage & & ballsLeft > 0) {/* Divide skjermen i 3 deler * //* Venstre * /if (touch.position.x > = 0 & & touch.position.x < = Screen.width /3) {ballPos.x = Random.Range (-0.87f, -0.35f); } /* Center * /else if (touch.position.x > Screen.width /3 & & touch.position.x < = (Screen.width /3) * 2) {ballPos.x = Random. Range (-0.35f, 0.22f); } /* Høyre * /else if (touch.position.x > (Screen.width /3) * 2 & & touch.position.x < = Screen.width) {ballPos.x = Random.Range ( 0.22f, 0.36f); } GameObject ball = instantiate (ballReference, ballPos, transform.rotation) som GameObject; ball.rigidbody.AddForce (throwSpeed); AudioSource.PlayClipAtPoint (throwSound, transform.position); endPos = new Vektor2 (0, 0); startPos = new Vektor2 (0, 0); ballOnStage = true; }}}} 
 23. BallSensor Class 
 
 Følgende skript inneholder gjennomføring av BallSensor klassen og er festet til kule sensorer, håndtering av eventuelle kollisjoner med kule sensorer 
 
 Trinn 1:. Erklærte Variabler 
 
 Vi starter med å erklære en variabel som heter sensorValue, som lagrer antall poeng ballen sensor vil legge til stillingen. Fordi ballen sensorene er alle like ferdighus, erklærer vi denne variabelen som offentlig. Dette vil gi oss mulighet til å sette denne verdien i redigeringsprogrammet ved hjelp av  Inspector 
 hjelp UnityEngine, bruker System.Collections; public class BallSensor. MonoBehaviour {public int sensorValue = 0; offentlig GUIText scoreReference; offentlig GameObject alertReference; 
 De andre to variablene butikk referanser til score og varselspillobjektene, som vi også satt i Unity  Inspector 
. Disse referansene vil bli brukt til å øke poengsummen og vise varsling når spillet slutter 
 
 Trinn 2:. Ødelegge Ball 
 
 OnTriggerEnter metoden oppdager når en kollisjon har oppstått og aksepterer Collider objekt sensoren er å kollidere med, ballen i dette tilfellet. Når en kollisjon blir oppdaget, ballen er ødelagt for å hindre den fra å sprette og potensielt fallende i et annet hull 
 annullere OnTriggerEnter (Collider andre) {Destroy (other.gameObject); 
 Trinn 3:. Aktivere Throw Anmeldelser 
 Etter å ødelegge ballen, er vi sikker på at det ikke er på smuget lenger. Dette betyr at vi kan kaste uten å utløse uønsket atferd med en annen ball. Følgende kodelinje kommuniserer med ThrowBall klassen og får ballOnStage variabel, sette den til false 
 Camera.main.GetComponent. ≪ ThrowBall >. () BallOnStage = false; 
 La oss ta en nærmere titt på hvordan vi tilgang til en variabel deklarert i en annen klasse. Som du kan fortelle nå, en måte å få tilgang til en variabel eller objekt erklært utenfor gjeldende klassen er å sette en referanse variabel ved hjelp av offentlige eller [SerializeField], og deretter bruke  Inspektør 
 å gi den en verdi . 
 
 Den offentlige søkeord spiller en viktig rolle i dette. Bruke det gjør variabelen ikke bare tilgjengelig fra  Inspector 
, men også gjennom koden. For å gjøre dette, må vi først tilgang til  GameObject 
 som har  Script Component 
 knyttet til det, som er det  Hovedkamera 
 i dette tilfellet. Anmeldelser 
 Det er bare ett kamera i dette spillet, som gjør ting enklere. Vi kan få en henvisning til hovedkameraet gjennom Camera.main. Bruke GetComponent vi får manuset festet til kameraet, ved hjelp av navnet på klassen. Vi har da tilgang til det offentlige variabel kalt ballOnStage 
 
 Trinn 4:.. Endre Score 
 
 Følgende kode blokk oppdaterer score, ved hjelp av referansen vi erklært tidligere 
 scoreReference.text = (int.Parse (scoreReference.text) + sensorValue) .ToString (); 
 Vi konvertere verdien som er lagret i scoreReference til et heltall og legge den til verdien som er lagret i sensorValue. Vi konverterer resultatet til en streng og tilordne den til teksten eiendom scoreReference 
 
 Trinn 5:. Oppdatere Øvrige Balls 
 
 I dette trinnet reduseres vi antallet gjenværende baller. Vi bruker metoden beskrevet i  Trinn 3 
 å få tilgang til ballsLeft og ballsTextReference variablene i ThrowBall class.
Camera.main.GetComponent<ThrowBall>().ballsLeft--;Camera.main.GetComponent<ThrowBall>().ballsTextReference.text . = Camera.main.GetComponent < ThrowBall > () ballsLeft.ToString (); 
 Vi minske verdien lagret i ballsLeft og oppdatere teksten eiendom ballsTextReference 
 
 Trinn 6: Ser etter. Game Over 
 
 Spillet er over når spilleren går tom for tilgjengelige bilder. De neste linjer med kode sjekke om ballsLeft variabelen er lik 0 og skape et varsel om sant. Vi deretter ringe Invoke metode for å påberope seg Reload metoden, som starter spillet ved omlasting den aktuelle scenen. 
 
 Den andre parameteren i Invoke metoden definerer forsinkelsen med hvilken Reload metoden vil bli påberopt. Vi gjør dette for å gi spilleren litt tid før vi starter et nytt spill 
 om. (Camera.main.GetComponent < ThrowBall >. () BallsLeft == 0) {instantiate (alertReference, ny Vector3 (0.5f , 0.5f, 0), transform.rotation); Påkall ("Last", 3); }} 
 Trinn 7: Oppgradere Spillanmeldelser 
 Dette er den siste delen av BallSensor klassen. I Reload metoden, kaller vi LoadLevel på Application klasse og laste dagens nivå, nullstille alle objektene og variabel til opprinnelig tilstand 
 annullere Reload () {Application.LoadLevel (Application.loadedLevel.); }} 
 Dette er hva klassen ser ut når du er ferdig 
 bruker UnityEngine, bruker System.Collections; public class BallSensor. MonoBehaviour {public int sensorValue = 0; offentlig GUIText scoreReference; offentlig GameObject alertReference; void OnTriggerEnter (Collider andre) {Destroy (other.gameObject); Camera.main.GetComponent < ThrowBall >. () BallOnStage = false; scoreReference.text = (int.Parse (scoreReference.text) + sensorValue) .ToString (); Camera.main.GetComponent < ThrowBall > () ballsLeft--.; Camera.main.GetComponent < ThrowBall > () ballsTextReference.text = Camera.main.GetComponent. ≪ ThrowBall > () ballsLeft.ToString (.); if (Camera.main.GetComponent < ThrowBall >. () ballsLeft == 0) {instantiate (alertReference, ny Vector3 (0.5f, 0.5f, 0), transform.rotation); Påkall ("Last", 3); }} Void Reload () {Application.LoadLevel (Application.loadedLevel); }} 
 24. Testing 
 
 Det er på tide å teste spillet. Trykk  Kommando-P 
 å spille spillet i Unity. Hvis alt fungerer som forventet, da er du klar for de siste trinnene. 
 
 25. Player Settings 
 
 Når du er fornøyd med spillet, er det tid for å velge  Bygg Settings 
 fra  Fil 
 menyen og klikk på  Player Settings Anmeldelser knapp. Dette bør få opp  Player Settings 
 i  Inspector 
 panel der du kan stille inn parametrene for din søknad. 
 
 Disse innstillingene er programspesifikke data som inkluderer skaperen eller Selskapet, app oppløsning og visningsmodus, gjengivelsesmodus (CPU, GPU), enhets OS kompatibilitet, etc. Konfigurer innstillingene i henhold til de enhetene du målretter og butikken eller marked hvor du har tenkt å publisere app. 
 < h2> 26. Ikoner og Splash Images 
 Ved hjelp av grafikken du opprettet tidligere, kan du nå lage et fint ikon og en splash bilde for spillet ditt. Unity viser deg de nødvendige størrelser, som er avhengig av plattformen du bygger på. 
 
 27. Bygg og Spill 
 
 
 
 Når prosjektet er riktig konfigurert, er det på tide å revidere  Bygg Innstillinger Kjøpe og klikk på  bygge 
 Button. Det er alt det tar å bygge spillet for testing og /eller distribusjon. 
 
 Konklusjon 
 
I denne opplæringen, har vi lært å bruke fysikk krefter, sveiper gester, klasse kommunikasjon, og andre aspekter av spillet utvikling i Unity. Jeg oppfordrer deg til å eksperimentere med resultatet og tilpasse spillet for å gjøre den til din egen. Jeg håper du likte denne opplæringen, og fant den nyttig.

