I denne opplæringen lærer du hvordan du lager et mobil 3D-spill ved hjelp av C # og Unity. Målet med spillet er å kutte frukten som vises på scenen ved hjelp av berøringsskjermen.
Du vil lære om følgende aspekter av Unity game utvikling i denne opplæringen:
Brukergrensesnittet til spillet er greit. Skjermbildet nedenfor gir deg en ide om kunstverket vi skal bruke og hvordan det endelige brukergrensesnittet vil ende opp med å se. Du finner illustrasjoner og tilleggsressurser i opplærings kildefiler på GitHub.
Åpne enhet og velg Nytt prosjekt fra Fil menyen for å åpne den nye prosjektdialogen. Fortell Unity hvor du vil lagre prosjektet og angiAngi standardverdier for: menyen til 3D.
I neste trinn presenteres Unity brukergrensesnitt. Sett prosjektet opp for mobil utvikling ved å velge Bygg innstillinger fra Fil menyen og velg din valgfri plattform.
Det første vi må gjøre etter å ha valgt målplattformen, er å velge størrelsen på kunstverket vi skal bruke i spillet. Dette vil hjelpe oss med å velge riktig størrelse for 3D-teksturer og 2D GUI uten å gjøre bildene uklare eller bruke teksturer som er for store for målenheten. For eksempel må kunstverket ha en høyere oppløsning hvis du målretter mot en iPad med en netthinnenhet enn en Lumia 520.
Fordi Android er en åpen plattform, finnes det et bredt spekter av enheter, skjermoppløsninger og pikseldensiteter. Noen av de vanligste er listet opp nedenfor.
Merk at koden vi skal skrive i denne opplæringen, kan brukes til å målrette mot noen av plattformene.
Avhengig av enhetene du målretter mot, må du kanskje konvertere illustrasjonen til den anbefalte størrelsen og pixeldensiteten. Du kan gjøre dette i favorittbildeditoren din. Jeg har brukt Juster størrelse ... fungere under Verktøy menyen i OS X Forhåndsvisning applikasjon.
Før vi begynner, må du kontrollere at 2D knappen i scene panelet er ikke uthevet. Du kan også endre oppløsningen som vises i Spill panel.
Du blir så presentert med arbeidspanelpanelene, som vi også vil bruke i denne opplæringen. Ta deg tid til å se på hovedgrensesnittpanelene, for eksempel scene, Spill, hierarki, Prosjekt, Eiendeler, og Inspektør. Vi bruker dem ofte i denne opplæringen.
Du kan bruke ett av tre programmeringsspråk når du bruker Unity, C #, UnityScript, en variant av JavaScript, og Boo. Hvert programmeringsspråk har sine fordeler og ulemper, og det er opp til deg å bestemme hvilken du foretrekker. Min personlige preferanse går til C # programmeringsspråket, så det er språket jeg skal bruke i denne opplæringen.
Hvis du bestemmer deg for å bruke et annet programmeringsspråk, så sørg for å se på Unitys Script Reference for eksempler.
Jeg bruker en rekke lyder for å forbedre lydopplevelsen av spillet. Lydeffektene som ble brukt i denne opplæringen ble hentet fra PlayOnLoop og Freesound.
For å lage spillet må vi først få noen 3D-modeller. Jeg anbefaler 3docean for høykvalitetsmodeller og teksturer, men hvis du prøver eller lærer, vil gratis modeller fungere like bra. Modellene i denne opplæringen ble lastet ned fra SketchUp 3D Warehouse hvor du kan finne et bredt utvalg av 3D-modeller.
Fordi Unity ikke gjenkjenner SketchUp filformatet, må vi konvertere det til noe Unity kan importere. Vi må først laste ned den gratis versjonen av SketchUp, som heter SketchUp Make.
Åpne 3D-modellen i SketchUp Make, velg Eksporter> 3D-modell fra Fil menyen, og velg Collada (* .dae). Velg et navn og et sted, og klikk Lagre. Dette vil opprette en fil og en mappe for 3D-modellen. Filen inneholder dataene for 3D-objektet mens mappen inneholder modellens teksturer. I neste trinn importerer vi modellen til Unity.
Før vi starter kodingen, må vi legge til eiendelene til Unity-prosjektet. Du kan gjøre dette på flere måter:
Etter å ha fullført dette trinnet, bør du se eiendelene i prosjektet ditt Eiendeler mappe i Prosjekt panel.
I dette trinnet plasserer vi hovedkameraet for å lage visningen vi ønsker. Velg hovedkameraet fra hierarki panel og juster Forvandle verdier i Inspektør for å matche dem som er vist nedenfor.
Ikke bekymre deg hvis du ikke ser noen endringer. Vi har ikke laget noe for kameraet for å se enda.
For at objektene våre skal være synlige i 3D-verden, må vi legge til lys på scenen. Å velge Opprett annet fra GameObject menyen og velg Retningslys. Dette vil skape et objekt som produserer en stråle av lys. Endre dens Forvandle verdier som vist på følgende skjermbilde for å gjøre det opplyst.
Lyset skal være synlig på scenen som vist på følgende skjermbilde.
Vi bruker en Sprite tekstur som vår bakgrunn. Som standard importeres bilder til Eiendeler mappen konverteres til Tekstur forekomster som kan brukes på 3D-objekter. Vi må endre disse Tekstur forekomster til Sprite Texture forekomster for bildet vi vil bruke som bakgrunn.
Velg bildet du vil konvertere i Eiendeler panel og åpne Inspektør. Å velge Sprite fra Teksturtype Meny.
Dra og slipp bakgrunnen i hierarki panel. Den skal automatisk vises i scene panel. Juster Forvandle verdier i Inspektør som vist på neste skjermbilde.
For å vise spillets poengsum, bruker vi Unity GUI Tekst og en importert 3D-modell.
Velg den importerte 3D-modellen du ønsker, fra Eiendeler panelet og dra og slipp det på scene. Jeg skal bruke en eple modell. Juster Forvandle verdier i Inspektør for å matche dem som er vist nedenfor.
Dette vil plassere eplet øverst til venstre på skjermen.
Sammen med eplemodellen viser vi et nummer som angir spillerens poengsum. Dette er antall frukter spilleren har kuttet.
Å velge Opprett annet> GUI-tekst fra GameObject menyen for å lage en tekstobjekt, plasser den til høyre for eplemodellen, og endre teksten i Inspektør panel til 0.
Du kan legge inn en egendefinert font ved å importere den i Eiendeler mappe og endre Font Egenskapen til teksten i Inspektør.
Vi bruker en timer for å indikere når spillet er over. Den består av a GUI Texture viser et ikon og a GUI Tekst viser gjenværende tid.
For å legge til klokkeikonet, velg bildet du vil bruke i Eiendeler panel og åpne Inspektør. Å velge GUI fra Teksturtype menyen for å konvertere den til en GUI-tekstur. Dra og slipp bildet til scene og endre transformasjonsverdiene til de som er vist nedenfor.
Scenen skal nå se slik ut.
Gjenta trinnene for å legge til poengteksten for å legge til timerteksten. Ikke glem å sette teksten til riktig tid.
Alarmen er en GUI Texture som vi viser når timeren når 0. Det vil vise et spill over meldingen midt på skjermen.
Hvis du vil opprette varselet, konverterer du varselbildet til en GUI Texture bruker Inspektør. Dra den fra hierarki panel til Eiendeler panelet for å konvertere det til a Prefab.
Timer
KlasseLa oss nå implementere Timer
klasse. Velg Time GUI Text, Klikk på Legg til komponent knappen i Inspektør panel, og velg Nytt skript. Gi navnet på skriptet Timer og ikke glem å endre språket til C #. Åpne den nyopprettede filen og følg de neste trinnene.
Vi starter med å opprette en rekke variabler som vi skal bruke i Timer
klasse.
privat GUIText timeTF; offentlig GameObject alarmReference
La oss ta en titt på hver av variablene.
timeTF
: en referanse til Time GUI TextalertReference
: en referanse til advarsel prefabVi bruker disse referansene for å få tilgang til tiden og varsle spillobjekter og endre verdiene deres. Still alarmen prefab i Inspektør.
Med variablene deklarert, setter vi inn timeTF
verdi ved å få tilgang til guiText
Egenskapen til gjeldende spillobjekt. Dette vil la oss endre tekstverdien senere.
Vi kaller også InvokeRepeating
metode som vil påberope seg ReduceTime
metode hvert sekund.
void Start () timeTF = gameObject.guiText; InvokeRepeating ("ReduceTime", 1, 1);
ReduceTime
De ReduceTime
Metoden er ansvarlig for å oppdatere tidtekstteksten og vise varselmeldingen. Spillet er over når tiden når 0. Legg til følgende kodeblokk til Timer
klasse.
void ReduceTime () if (timeTF.text == "1") / * Alert * / Time.timeScale = 0; Instantiate (alertReference, ny Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); GameObject.Find ( "AppleGUI"). GetComponent().Stoppe(); timeTF.text = (int.Parse (timeTF.text) - 1) .ToString ();
Vi starter med å teste om tiden er i ferd med å avslutte. Hvis ekte
, Vi stopper spillet ved å endre tidsskala
eiendom til 0, lage en forekomst av varselet, og spill spillet over lyden.
Hvis tiden ikke er i ferd med å avslutte, reduserer vi bare verdien av 1. For å gjøre dette bruker vi int.Parse
metode for å konvertere tidstrengen til et tall, trekke ned 1, og ring toString
på den for å konvertere resultatet tilbake til en streng.
Last
MetodeDette er den siste delen av Timer
klasse. I Last
metode, vi kaller LoadLevel
på applikasjon
klassen og last inn det nåværende nivået, tilbakestill hvert objekt og variabel til sin opprinnelige tilstand.
ugyldig gjenopplasting () Application.LoadLevel (Application.loadedLevel);
Dette er hva hele klassen skal se ut når den er ferdig.
bruker UnityEngine; bruker System.Collections; offentlig klasse Timer: MonoBehaviour private GUIText timeTF; offentlig GameObject alertReference; void Start () timeTF = gameObject.guiText; InvokeRepeating ("ReduceTime", 1, 1); void ReduceTime () if (timeTF.text == "1") / * Alert * / Time.timeScale = 0; Instantiate (alertReference, ny Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); GameObject.Find ( "AppleGUI"). GetComponent().Stoppe(); timeTF.text = (int.Parse (timeTF.text) - 1) .ToString (); ugyldig Oppdater () Application.LoadLevel (Application.loadedLevel);
Eplet er et av de viktigste elementene i spillet, og det er en av de interaktive objekter på skjermen. Spilleren kan bruke enhetens berøringsskjerm for å kutte eplet og øke sin score.
Dra eplet fra Eiendeler panel til scene. Ikke vær bekymret for posisjonen sin, fordi vi konverterer den til en Prefab i et øyeblikk og fjern det fra hierarki.
For å oppdage en kollisjon med eplet, må vi legge til en Stiv kropp til det. For å legge til en, velg Legg til komponent fra Inspektør panel og velg Fysikk> Rigidbody. Du kan legge inn innstillingene til standardinnstillingene.
Vi må også legge til en boksekollider til eplet for å oppdage kollisjoner. Denne collider vil definere eplets hitområde. Klikk på Legg til komponent knappen i Inspektør panel, velg Fysikk> Box Collider, og endre verdiene som vist på skjermbildet nedenfor.
I scene panel, en grønn boks skal vises rundt eplet, som representerer boksen collider vi nettopp lagt til.
Den splash prefab vil bli brukt som en visuell effekt for når frukten er skåret av spilleren. Det vil dukke opp på scenen for hver frukt, og spilleren kutter og forsvinner sakte over tid. Konverter bildet til en Sprite som beskrevet tidligere og legge det til scene.
Legg til et skript for det og dra det tilbake til Eiendeler panel for å lage en Prefab. Åpne den nyopprettede klassen.
Sprut
KlasseDe Sprut
Klassen håndterer bildene som er opprettet når frukten er skåret.
Disse variablene brukes til å beregne og sette en alfa-verdi til sprutprefabrikken. Ved å bytte sin alpha-egenskap kan vi fade prefabeten når tiden går.
privat farge randomAlpha; privat float currentAlpha;
I denne metoden beregner vi en tilfeldig alfa-verdi fra 0.3 til 0.5 og lagre den verdien i randomAlpha
variabel. Vi setter deretter den resulterende alfa til farge
egenskapen til spillobjektet.
I den siste kodelinjen kaller vi metoden som vil redusere den verdien hver 300 millisekunder, noe som skaper en fading effekt.
void Start () randomAlpha = new Color (1, 1, 1, Random.Range (0.3f, 0.5f)); gameObject.renderer.material.color = randomAlpha; InvokeRepeating ("ReduceAlpha", 0.3f, 0.3f);
For å redusere alfa må vi først oppnå den nåværende verdien. De currentAlpha
variabel lagrer denne verdien. Vi trekker deretter av 0.1 fra den verdien og overføre den nye alfa til spillobjektet. Bildet fjernes når det er nesten usynlig.
void ReduceAlpha () currentAlpha = gameObject.renderer.material.color.a; hvis (gameObject.renderer.material.color.a <= 0.1f) Destroy(gameObject); else gameObject.renderer.material.color = new Color(1, 1, 1, currentAlpha - 0.1f);
Dette er hva Sprut
klassen ser ut som.
bruker UnityEngine; bruker System.Collections; offentlig klasse Splash: MonoBehaviour private Color randomAlpha; privat float currentAlpha; void Start () randomAlpha = new Color (1, 1, 1, Random.Range (0.3f, 0.5f)); gameObject.renderer.material.color = randomAlpha; InvokeRepeating ("ReduceAlpha", 0.3f, 0.3f); void ReduceAlpha () currentAlpha = gameObject.renderer.material.color.a; hvis (gameObject.renderer.material.color.a <= 0.1f) Destroy(gameObject); else gameObject.renderer.material.color = new Color(1, 1, 1, currentAlpha - 0.1f);
eple
KlasseMed vår splash prefab opprettet, kan vi nå fortsette med eple
klasse. Denne klassen håndterer handlinger, for eksempel kollisjonsdeteksjon, oppdatering av poengsummen og fjerning av eplet fra scenen.
Tre variabler er erklært i eple
klasse:
splashReference
: referanse til plask prefabrandomPos
: plassering for sprutprefabrikkenscoreReference
: referanse til poengsummen GUI-teksten[SerializeField] privat GameObject splashReference; privat Vector3 randomPos = ny Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); privat GUIText scoreReference;
For å få en referanse til poengsummen bruker vi Finne
metode. Denne metoden søker de aktive spillobjektene og returnerer objektet vi leter etter, poengsummen GUI Tekst i dette tilfellet.
void Start () scoreReference = GameObject.Find ("Score"). guiText;
Med scoreReference
variabelt sett, kan vi nå øke verdien når en frukt er skåret.
I Oppdater
Metode, vi kontrollerer om frukten ikke lenger er synlig på skjermen ved å få tilgang til den y
posisjon og fjern det hvis ekte
. Dette hjelper oss med å frigjøre minne ved å ødelegge ubrukte spillobjekter.
ugyldig oppdatering () / * Fjern frukt hvis du ikke har utsikt * / hvis (gameObject.transform.position.y < -36) Destroy(gameObject);
Den neste koden bruker OnCollisionEnter
Metode for å oppdage når frukten er skåret av spilleren. Når dette skjer, spiller vi kuttet lyden og fjerner frukten. Deretter oppretter vi en ny forekomst av splash prefab og oppdaterer poengsummen.
void OnCollisionEnter (Kollisjon annet) if (other.gameObject.name == "Line") Camera.main.GetComponent().Spille(); Ødelegge (gameObject); Instantiate (splashReference, randomPos, transform.rotation); / * Oppdater Score * / scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString ();
Dette er det komplett eple
klassen ser ut som.
bruker UnityEngine; bruker System.Collections; offentlig klasse Apple: MonoBehaviour [SerializeField] privat GameObject splashReference; privat Vector3 randomPos = ny Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); privat GUIText scoreReference; void Start () scoreReference = GameObject.Find ("Score"). guiText; ugyldig oppdatering () / * Fjern frukt hvis du ikke er ute av View * / if (gameObject.transform.position.y < -36) Destroy(gameObject); void OnCollisionEnter(Collision other) if(other.gameObject.name == "Line") Camera.main.GetComponent().Spille(); Ødelegge (gameObject); Instantiate (splashReference, randomPos, transform.rotation); / * Oppdater Score * / scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString ();
FruitSpawner
KlasseDe FruitSpawner
klassen instantiates og flytter fruktene til scenen. Det er festet til hovedkameraet.
Dette er variablene deklarert i denne klassen.
[SerializeField] privat GameObject appleReference; privat Vector3 throwForce = ny Vector3 (0, 18, 0);
appleReference
: referanse til epleprefabthrowForce
: Kraften som brukes til å presse fruktene oppoverI de neste kodelinjene kaller vi InvokeRepeating
metode for å påkalle SpawnFruit
metode hvert sjette sekund. Dette vil legge til nye frukter til scenen hvert sjette sekund, noe som gir spilleren tid til å skjære dem før frukten faller til bunnen av scenen.
void Start () InvokeRepeating ("SpawnFruit", 0,5f, 6);
SpawnFruit
MetodeDe SpawnFruit
Metoden skaper fruktene og skyver dem oppover for at spilleren skal kutte. Vi bruker en til
uttalelse for å instantiere fruktene, plassere dem tilfeldig på scenen og bruke en fysikkstyrke ved hjelp av addForce
metode.
void SpawnFruit () for (byte i = 0; i < 4; i++) GameObject fruit = Instantiate(appleReference, new Vector3(Random.Range(10, 30), Random.Range(-25, -35), -32), Quaternion.identity) as GameObject; fruit.rigidbody.AddForce(throwForce, ForceMode.Impulse);
Dette er komplett FruitSpawner
klasse.
bruker UnityEngine; bruker System.Collections; offentlig klasse FruitSpawner: MonoBehaviour [SerializeField] private GameObject appleReference; privat Vector3 throwForce = ny Vector3 (0, 18, 0); void Start () InvokeRepeating ("SpawnFruit", 0,5f, 6); void SpawnFruit () for (byte i = 0; i < 4; i++) GameObject fruit = Instantiate(appleReference, new Vector3(Random.Range(10, 30), Random.Range(-25, -35), -32), Quaternion.identity) as GameObject; fruit.rigidbody.AddForce(throwForce, ForceMode.Impulse);
La oss nå implementere berøringsreglene. Spilleren vil kunne bruke berøringsskjermen til å kutte fruktene. Vi visualiserer dette ved å tegne en linje ved hjelp av LineRenderer
klassen og deretter sjekke om frukten kolliderer med spillerens sveipebevegelse.
Vi begynner med å opprette noen variabler.
c1, c2
: Disse variablene angir linjens fargelineGO
: Dette spillobjektet vil holde linjeleverandørenlineRenderer
: linjene gjengivelseseksempelJeg
: En int verdi som brukes til å angi størrelsen og indeksen for linjenoffentlig farge c1 = color.yellow; offentlig farge c2 = color.red; privat GameObject lineGO; privat LineRenderer lineRenderer; privat int i = 0;
I Start
Metode, vi setter opp de nødvendige gjenstandene og egenskapene for linjen. Vi begynner med å lage en ny GameObject
forekomst som inneholder LineRenderer
. Vi bruker så noen av linjeleverandørmetodene til å angi måten den skal se ut.
void Start () lineGO = new GameObject ("Line"); lineGO.AddComponent(); lineRenderer = lineGO.GetComponent (); lineRenderer.material = nytt materiale (Shader.Find ("Mobile / Particles / Additive")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0);
De fleste egenskapene i denne koden er enkle å forstå, SetColor
endrer fargen på linjen og SetWidth
setter bredden sin. Vær særlig oppmerksom på SetVertexCount
linje. Denne metoden angir antall punkter på linjen. Ved å kalle denne metoden med et høyere antall poeng, kan vi øke størrelsen på linjen. Dette blir tydeligere i neste trinn.
Linjen er opprettet i Oppdater
metode. Vi testes først om spilleren berører skjermen ved å hente touchCount
eiendom av Input
klasse. Hvis eiendommen er større det 0, det betyr at det er minst én finger på enhetens skjerm.
Vi holder en referanse til Ta på
objekt for enklere tilgang og sjekk hvilken fase den er i. Vi trenger det til å være i flyttet
fase for å kunne opprette linjen.
Hvis spilleren beveger fingeren over skjermen, kan vi begynne å lage et linjesegment på den aktuelle posisjonen. Vi påberoper SetVertexCount
metode igjen for å øke maksimalt antall segmenter av linjen.
ugyldig oppdatering () hvis (Input.touchCount> 0) Touch touch = Input.GetTouch (0); hvis (touch.phase == TouchPhase.Moved) lineRenderer.SetVertexCount (jeg + 1); Vector3 mPosition = ny Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (jeg, Camera.main.ScreenToWorldPoint (mPosition)); i ++;
Med linjen på plass legger vi til en collider for å hjelpe oss med å oppdage en kollisjon med noen av fruktene. Følgende kodestykke oppretter og legger til en boksekollider til linjen ved hjelp av AddComponent
metode og setter sin posisjon til lineRenderer
nåværende posisjon. Den siste kodelinjen endrer standardstørrelsen på collideren for å matche linjens størrelse.
BoxCollider bc = lineGO.AddComponent(); bc.transform.position = lineRenderer.transform.position; bc.size = ny Vector3 (0.1f, 0.1f, 0.1f);
Vi fjerner linjen når spilleren ikke lenger berører skjermen. Dette forhindrer uønskede kollisjoner med eplene.
I neste kodestykke, kontrollerer vi om den nåværende fasen av Ta på
objektet er Endte
og sett vertex tellingen av lineRenderer
til 0. Dette fjerner de nåværende linjesegmentene, men det ødelegger ikke objektet, slik at vi kan bruke det senere. Vi tilbakestiller også Jeg
variabel for å tillate senere bruk.
hvis (touch.phase == TouchPhase.Ended) / * Fjern Linje * / lineRenderer.SetVertexCount (0); i = 0;
Når linjen er fjernet, trenger vi ikke lenger boksekollidrene festet til den. Vi lager først en rekke BoxCollider
objekter, lagre boksekolliderne av linjespillobjektet. Vi sløyfe over arrayet og ødelegger hver boks collider.
/ * Fjern linjekollider * / BoxCollider [] lineColliders = lineGO.GetComponents(); foreach (BoxCollider b i lineColliders) Destroy (b);
La oss ta en titt på den fullstendige implementeringen av LinesHandler
klasse.
bruker UnityEngine; bruker System.Collections; offentlig klasse LinesHandler: MonoBehaviour public Color c1 = Color.yellow; offentlig farge c2 = color.red; privat GameObject lineGO; privat LineRenderer lineRenderer; privat int i = 0; void Start () lineGO = new GameObject ("Line"); lineGO.AddComponent(); lineRenderer = lineGO.GetComponent (); lineRenderer.material = nytt materiale (Shader.Find ("Mobile / Particles / Additive")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0); ugyldig oppdatering () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0); hvis (touch.phase == TouchPhase.Moved) lineRenderer.SetVertexCount (jeg + 1); Vector3 mPosition = ny Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (jeg, Camera.main.ScreenToWorldPoint (mPosition)); i ++; / * Legg til Collider * / BoxCollider bc = lineGO.AddComponent (); bc.transform.position = lineRenderer.transform.position; bc.size = ny Vector3 (0.1f, 0.1f, 0.1f); hvis (touch.phase == TouchPhase.Ended) / * Fjern Linje * / lineRenderer.SetVertexCount (0); i = 0; / * Fjern linjekollider * / BoxCollider [] lineColliders = lineGO.GetComponents (); foreach (BoxCollider b i lineColliders) Destroy (b);
Det er på tide å teste spillet. trykk Kommando-P å spille spillet i Unity. Hvis alt fungerer som forventet, er du klar for de siste trinnene.
Når du er fornøyd med spillet ditt, er det på tide å velge Bygg innstillinger fra Fil menyen og klikk på Spillerinnstillinger knapp. Dette burde hente opp Spillerinnstillinger i Inspektør panel der du kan angi parametrene for søknaden din.
Disse innstillingene er programspesifikke data som inkluderer skaperen eller firmaet, appoppløsningen og visningsmodus, gjengivelsesmodus (CPU, GPU), enhetens OS-kompatibilitet, etc. Konfigurer innstillingene i henhold til enhetene du målretter mot og butikken eller markedet der du planlegger å publisere appen.
Ved å bruke grafikken du opprettet tidligere, kan du nå lage et fint ikon og et splashbilde for spillet ditt. Enhet viser deg de nødvendige størrelsene, som avhenger av plattformen du bygger for.
Når prosjektet ditt er riktig konfigurert, er det på tide å besøke Bygg innstillinger og klikk på Bygge Knapp. Det er alt som trengs for å bygge spillet ditt for testing og / eller distribusjon.
I denne opplæringen har vi lært hvordan du bruker berøringskontroller, fysikkstyrker, GUI-teksturer og andre aspekter av spillutvikling i Unity. Jeg oppfordrer deg til å eksperimentere med resultatet og tilpasse spillet for å gjøre det til ditt eget. Jeg håper du likte denne opplæringen og fant det nyttig.