In questo tutorial imparerai come creare un gioco 3D mobile usando C # e Unity. L'obiettivo del gioco è tagliare la frutta che appare sul palco usando il touch screen.
In questo tutorial imparerai i seguenti aspetti dello sviluppo del gioco Unity:
L'interfaccia utente del gioco è semplice. Lo screenshot qui sotto ti dà un'idea dell'opera d'arte che useremo e di come l'interfaccia utente finale andrà a finire. Puoi trovare il disegno e le risorse aggiuntive nei file sorgente del tutorial su GitHub.
Apri Unity e seleziona Nuovo progetto dal File menu per aprire la nuova finestra di dialogo del progetto. Dillo a Unity dove vuoi salvare il progetto e impostare ilImpostare i valori predefiniti per: menu a 3D.
Nel prossimo passaggio, ti verrà presentata l'interfaccia utente di Unity. Scegli il progetto per lo sviluppo mobile scegliendo Costruisci le impostazioni dal File menu e selezionando la tua piattaforma di scelta.
La prima cosa che dobbiamo fare dopo aver selezionato la piattaforma di destinazione è scegliere la dimensione del disegno che useremo nel gioco. Questo ci aiuterà a selezionare una dimensione adeguata per le trame 3D e la GUI 2D senza rendere il disegno sfocato o utilizzare trame troppo grandi per il dispositivo di destinazione. Ad esempio, la grafica deve avere una risoluzione maggiore se si sta puntando a un iPad con display retina rispetto a un Lumia 520.
Poiché Android è una piattaforma aperta, esiste una vasta gamma di dispositivi, risoluzioni dello schermo e densità di pixel. Alcuni dei più comuni sono elencati di seguito.
Tieni presente che il codice che scriveremo in questo tutorial può essere utilizzato per scegliere come target qualsiasi piattaforma.
A seconda dei dispositivi che hai scelto come target, potrebbe essere necessario convertire il materiale illustrativo nella dimensione e densità di pixel consigliate. Puoi farlo nel tuo editor di immagini preferito. Ho usato il Regola dimensioni ... funzione sotto il Utensili menu in OS X Anteprima applicazione.
Prima di iniziare, assicurati che il 2D pulsante nel Scena il pannello non è evidenziato. È anche possibile modificare la risoluzione che viene visualizzata nel Gioco pannello.
Ti verranno quindi presentati i pannelli dell'area di lavoro, che utilizzeremo anche in questo tutorial. Prenditi un momento per guardare i pannelli dell'interfaccia principale, come ad esempio Scena, Gioco, Gerarchia, Progetto, Risorse, e Ispettore. Li useremo spesso in questo tutorial.
È possibile utilizzare uno dei tre linguaggi di programmazione quando si utilizza Unity, C #, UnityScript, una variazione di JavaScript e fischio. Ogni linguaggio di programmazione ha i suoi pro e contro, e spetta a te decidere quale preferisci. La mia preferenza personale va al linguaggio di programmazione C #, quindi questa è la lingua che userò in questo tutorial.
Se decidi di utilizzare un altro linguaggio di programmazione, assicurati di dare un'occhiata al Riferimento degli script di Unity per degli esempi.
Userò un numero di suoni per migliorare l'esperienza audial del gioco. Gli effetti sonori utilizzati in questo tutorial sono stati ottenuti da PlayOnLoop e Freesound.
Per creare il gioco, abbiamo prima bisogno di ottenere alcuni modelli 3D. Raccomando 3docean per modelli e trame di alta qualità, ma se stai provando o imparando, i modelli gratuiti funzioneranno altrettanto bene. I modelli di questo tutorial sono stati scaricati da SketchUp 3D Warehouse in cui è possibile trovare un'ampia varietà di modelli 3D.
Poiché Unity non riconosce il formato di file di SketchUp, è necessario convertirlo in qualcosa che Unity può importare. Per prima cosa dobbiamo scaricare la versione gratuita di SketchUp, che si chiama SketchUp Make.
Apri il modello 3D in SketchUp Make, seleziona Esporta> Modello 3D dal File menu e scegliere Collada (* .dae). Scegli un nome e una posizione, quindi fai clic su Salvare. Questo creerà un file e una cartella per il modello 3D. Il file contiene i dati per l'oggetto 3D mentre la cartella contiene le trame del modello. Nel prossimo passaggio, importeremo il modello in Unity.
Prima di iniziare la codifica, è necessario aggiungere le risorse al progetto Unity. Puoi farlo in diversi modi:
Dopo aver completato questo passaggio, dovresti vedere le risorse nel tuo progetto Risorse cartella nel Progetto pannello.
In questo passaggio, posizioniamo la fotocamera principale per creare la vista che vogliamo. Seleziona la fotocamera principale dal Gerarchia pannello e regolare il Trasformare valori nel Ispettore per abbinare quelli indicati di seguito.
Non preoccuparti se non vedi modifiche. Non abbiamo ancora creato nulla per la videocamera.
Affinché i nostri oggetti siano visibili nel mondo 3D, dobbiamo aggiungere luce alla scena. Selezionare Crea altro dal GameObject menu e selezionare Luce direzionale. Questo creerà un oggetto che produce un raggio di luce. Cambialo Trasformare valori come mostrato nella seguente schermata per farlo illuminare la scena.
La luce dovrebbe essere visibile sulla scena, come mostrato nello screenshot seguente.
Useremo a folletto trama come il nostro sfondo. Per impostazione predefinita, le immagini importate in Risorse la cartella viene convertita in Struttura istanze che possono essere applicate agli oggetti 3D. Dobbiamo cambiarli Struttura istanze a Sprite Texture istanze per l'immagine che vogliamo usare come sfondo.
Seleziona l'immagine che vuoi convertire nel Risorse pannello e apri il Ispettore. Selezionare folletto dal Tipo di trama menu.
Trascina e rilascia lo sfondo nel Gerarchia pannello. Dovrebbe apparire automaticamente nel Scena pannello. Aggiusta il Trasformare valori nel Ispettore come mostrato nello screenshot successivo.
Per visualizzare il punteggio del gioco, utilizzeremo Unity's Testo della GUI e un modello 3D importato.
Seleziona il modello 3D importato da te scelto Risorse pannello e trascinalo sul Scena. Userò un modello di mela. Aggiusta il Trasformare valori nel Ispettore per abbinare quelli indicati di seguito.
Questo posizionerà la mela nella parte superiore sinistra dello schermo.
Insieme al modello della mela, mostreremo un numero che indica il punteggio del giocatore. Questo è il numero di frutti che il giocatore ha tagliato.
Selezionare Crea altro> Testo della GUI dal GameObject menu per creare un oggetto di testo, posizionarlo a destra del modello di mela e modificare il testo nel Ispettore pannello a 0.
Puoi incorporare un font personalizzato importandolo nel Risorse cartella e cambiando il Font proprietà del testo nel Ispettore.
Useremo un timer per indicare quando il gioco è finito. È composto da a Texture GUI mostrando un'icona e a Testo della GUI visualizzazione del tempo rimanente.
Per aggiungere l'icona dell'orologio, selezionare l'immagine che si desidera utilizzare nel Risorse pannello e apri il Ispettore. Selezionare GUI dal Tipo di trama menu per convertirlo in una Texture GUI. Trascina e rilascia l'immagine sul Scena e cambia i suoi valori di trasformazione in quelli mostrati sotto.
La scena dovrebbe ora assomigliare a questo.
Ripeti i passaggi per aggiungere il testo del punteggio per aggiungere il testo del timer. Non dimenticare di impostare il testo sull'ora corretta.
L'avviso è a Texture GUI che mostreremo quando il timer raggiunge 0. Mostrerà un gioco sul messaggio al centro dello schermo.
Per creare l'avviso, converti l'immagine di avviso in a Texture GUI usando il Ispettore. Trascinalo dal Gerarchia pannello al Risorse pannello per convertirlo in a Prefab.
Timer
ClasseOra implementiamo il Timer
classe. Seleziona il Testo della GUI temporale, clicca il Aggiungi componente pulsante nel Ispettore pannello e scegliere Nuovo script. Dai un nome allo script Timer e non dimenticare di cambiare la lingua in C #. Apri il file appena creato e segui i passaggi successivi.
Iniziamo creando un numero di variabili che useremo nel Timer
classe.
tempo privato GUITextTF; pubblico GameObject alertReference
Diamo un'occhiata a ciascuna delle variabili.
timeTF
: un riferimento al testo della GUI del tempoalertReference
: un riferimento al prefabbricato di allertaUseremo questi riferimenti per accedere all'ora e allertare oggetti di gioco e cambiarne i valori. Impostare l'avviso prefabbricato nel Ispettore.
Con le variabili dichiarate, impostiamo il timeTF
valore accedendo al guiText
proprietà dell'oggetto di gioco corrente. Questo ci permetterà di modificare il valore del testo in seguito.
Chiamiamo anche il InvokeRepeating
metodo, che invocherà il ReduceTime
metodo ogni secondo.
void Start () timeTF = gameObject.guiText; InvokeRepeating ("ReduceTime", 1, 1);
ReduceTime
Il ReduceTime
il metodo è responsabile dell'aggiornamento del testo del timer e della visualizzazione del messaggio di avviso. Il gioco termina quando arriva il momento 0. Aggiungere il seguente blocco di codice al Timer
classe.
void ReduceTime () if (timeTF.text == "1") / * Alert * / Time.timeScale = 0; Instantiate (alertReference, new Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); GameObject.Find ( "AppleGUI"). GetComponent().Stop(); timeTF.text = (int.Parse (timeTF.text) - 1) .ToString ();
Iniziamo testando se il tempo sta per finire. Se vero
, interrompiamo il gioco cambiando il Orizzonte temporale
proprietà a 0, crea un'istanza di avviso e riproduci il suono del gioco.
Se il tempo non sta per finire, riduciamo semplicemente il suo valore di 1. Per fare questo, usiamo il int.Parse
metodo per convertire la stringa temporale in un numero, sottrarre 1, e chiama Accordare
su di esso per convertire il risultato in una stringa.
Ricaricare
MetodoQuesta è l'ultima parte del Timer
classe. Nel Ricaricare
metodo, chiamiamo LoadLevel
sul Applicazione
classificare e ricaricare il livello corrente, reimpostando ogni oggetto e variabile al suo stato iniziale.
void Reload () Application.LoadLevel (Application.loadedLevel);
Questo è come dovrebbe apparire la classe completa al termine.
usando UnityEngine; usando System.Collections; public class Timer: MonoBehaviour private GUIText timeTF; pubblico GameObject alertReference; void Start () timeTF = gameObject.guiText; InvokeRepeating ("ReduceTime", 1, 1); void ReduceTime () if (timeTF.text == "1") / * Alert * / Time.timeScale = 0; Instantiate (alertReference, new Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); GameObject.Find ( "AppleGUI"). GetComponent().Stop(); timeTF.text = (int.Parse (timeTF.text) - 1) .ToString (); void Reload () Application.LoadLevel (Application.loadedLevel);
La mela è uno degli elementi più importanti del gioco ed è uno degli oggetti interattivi dello schermo. Il giocatore è in grado di utilizzare il touch screen del dispositivo per tagliare la mela, aumentandone il punteggio.
Trascina la mela dal Risorse pannello al Scena. Non preoccuparti della sua posizione, perché la convertiamo in a Prefab in un attimo e rimuoverlo dal Gerarchia.
Per rilevare una collisione con la mela, dobbiamo aggiungere un Corpo rigido ad esso. Per aggiungerne uno, selezionare Aggiungi componente dal Ispettore pannello e scegliere Fisica> corpo rigido. È possibile lasciare le impostazioni ai loro valori predefiniti.
Abbiamo anche bisogno di aggiungere un collisore alla mela per rilevare le collisioni. Questo collisore definirà l'area colpita della mela. Clicca il Aggiungi componente pulsante nel Ispettore pannello, scegliere Fisica> Box Collider, e cambia i suoi valori come mostrato nello screenshot qui sotto.
Nel Scena pannello, una scatola verde dovrebbe apparire intorno alla mela, che rappresenta il collisore che abbiamo appena aggiunto.
Il prefabbricato splash sarà usato come effetto visivo per quando il frutto viene tagliato dal giocatore. Apparirà sul palco per ogni frutto che il giocatore taglia e svanisce lentamente nel tempo. Converti l'immagine in a folletto come descritto in precedenza e aggiungerlo al Scena.
Aggiungi uno script e trascinalo di nuovo Risorse pannello per creare a Prefab. Apri la classe appena creata.
spruzzo
ClasseIl spruzzo
class gestisce le immagini create quando il frutto viene tagliato.
Queste variabili vengono utilizzate per calcolare e impostare un valore alfa per il prefabbricato dello splash. Cambiando la sua proprietà alfa possiamo svanire il prefabbricato con il passare del tempo.
private Color randomAlpha; corrente mobile correnteAlpha;
In questo metodo calcoliamo un valore alfa casuale da 0.3 a 0.5 e memorizza quel valore nel randomAlpha
variabile. Quindi impostiamo l'alfa risultante su colore
proprietà dell'oggetto di gioco.
Nell'ultima riga di codice invochiamo il metodo che diminuirà ogni valore 300 millisecondi, creando un effetto dissolvenza.
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);
Per ridurre l'alfa, dobbiamo prima ottenere il valore corrente. Il currentAlpha
variabile memorizza questo valore. Quindi sottraiamo 0.1 da quel valore e riassegnare il nuovo alpha all'oggetto del gioco. L'immagine viene rimossa quando è quasi invisibile.
void ReduceAlpha () currentAlpha = gameObject.renderer.material.color.a; if (gameObject.renderer.material.color.a <= 0.1f) Destroy(gameObject); else gameObject.renderer.material.color = new Color(1, 1, 1, currentAlpha - 0.1f);
Questo è ciò che spruzzo
sembra la classe.
usando UnityEngine; usando System.Collections; public class Splash: MonoBehaviour private Color randomAlpha; corrente mobile correnteAlpha; 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; if (gameObject.renderer.material.color.a <= 0.1f) Destroy(gameObject); else gameObject.renderer.material.color = new Color(1, 1, 1, currentAlpha - 0.1f);
Mela
ClasseCon il nostro prefabbricato splash creato, possiamo ora continuare con il Mela
classe. Questa classe gestirà le azioni, come il rilevamento delle collisioni, l'aggiornamento del punteggio e la rimozione della mela dalla scena.
Tre variabili sono dichiarate nel Mela
classe:
splashReference
: riferimento al prefabbricato splashrandomPos
: posizione per il prefabbricato della spruzzatascoreReference
: riferimento al testo della GUI del punteggio[SerializeField] private GameObject splashReference; private Vector3 randomPos = new Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); punteggio GUIText privatoRiferimento;
Per ottenere un riferimento al testo del punteggio usiamo il Trova
metodo. Questo metodo cerca gli oggetti di gioco attivi e restituisce l'oggetto che stiamo cercando, il punteggio Testo della GUI in questo caso.
void Start () scoreReference = GameObject.Find ("Score"). guiText;
Con il scoreReference
set variabile, ora siamo in grado di aumentare il suo valore quando un frutto viene tagliato.
Nel Aggiornare
metodo, controlliamo se il frutto non è più visibile sullo schermo accedendo al suo y
posiziona e rimuovilo se vero
. Questo ci aiuta a liberare memoria distruggendo oggetti di gioco inutilizzati.
void Update () / * Rimuovi la frutta se fuori vista * / if (gameObject.transform.position.y < -36) Destroy(gameObject);
Il prossimo codice usa il OnCollisionEnter
metodo per rilevare quando il frutto viene tagliato dal giocatore. Quando ciò accade, riproduciamo il suono del taglio e rimuoviamo il frutto. Successivamente, creiamo una nuova istanza di splash prefab e aggiorniamo il punteggio.
void OnCollisionEnter (Collision other) if (other.gameObject.name == "Line") Camera.main.GetComponent().Giocare(); Destroy (gameObject); Instantiate (splashReference, randomPos, transform.rotation); / * Aggiorna punteggio * / scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString ();
Questo è ciò che è completo Mela
sembra la classe.
usando UnityEngine; usando System.Collections; public class Apple: MonoBehaviour [SerializeField] private GameObject splashReference; private Vector3 randomPos = new Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); punteggio GUIText privatoRiferimento; void Start () scoreReference = GameObject.Find ("Score"). guiText; void Update () / * Rimuovi la frutta se fuori vista * / if (gameObject.transform.position.y < -36) Destroy(gameObject); void OnCollisionEnter(Collision other) if(other.gameObject.name == "Line") Camera.main.GetComponent().Giocare(); Destroy (gameObject); Instantiate (splashReference, randomPos, transform.rotation); / * Aggiorna punteggio * / scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString ();
FruitSpawner
ClasseIl FruitSpawner
la classe crea un'istanza e sposta i frutti sulla scena. È collegato alla fotocamera principale.
Queste sono le variabili dichiarate in questa classe.
[SerializeField] private GameObject appleReference; private Vector3 throwForce = new Vector3 (0, 18, 0);
appleReference
: riferimento al prefabbricato della melathrowForce
: la forza usata per spingere i frutti verso l'altoNelle prossime righe di codice, chiamiamo il InvokeRepeating
metodo per invocare il SpawnFruit
metodo ogni sei secondi. Questo aggiungerà nuovi frutti alla scena ogni sei secondi, dando al giocatore il tempo di affettarli prima che il frutto cali sul fondo della scena.
void Start () InvokeRepeating ("SpawnFruit", 0.5f, 6);
SpawnFruit
MetodoIl SpawnFruit
il metodo crea i frutti e li spinge verso l'alto affinché il giocatore possa tagliare. Noi usiamo a per
dichiarazione per istanziare i frutti, posizionarli casualmente sulla scena e applicare una forza fisica usando il addForce
metodo.
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);
Questo è il completo FruitSpawner
classe.
usando UnityEngine; usando System.Collections; public class FruitSpawner: MonoBehaviour [SerializeField] private GameObject appleRiferimento; private Vector3 throwForce = new 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);
Ora implementiamo i comandi touch. Il giocatore sarà in grado di utilizzare il touch screen per tagliare i frutti. Visualizzeremo questo disegnando una linea usando il LineRenderer
classe e poi controllando se il frutto si scontra con il gesto di scorrimento del giocatore.
Iniziamo creando alcune variabili.
c1, c2
: queste variabili impostano il colore della linealineGO
: questo oggetto del gioco manterrà il renderizzatore di lineelineRenderer
: l'istanza del renderer di rigaio
: un valore int utilizzato per impostare la dimensione e l'indice della lineapublic Color c1 = Color.yellow; public Color c2 = Color.red; linea GameGObject privata; LineRenderer lineRenderer privato; int privato = 0;
Nel Inizio
metodo, impostiamo gli oggetti e le proprietà necessari per la linea. Iniziamo creando un nuovo GameObject
istanza contenente il LineRenderer
. Quindi usiamo alcuni dei metodi di renderizzatore di linea per impostare il modo in cui apparirà.
void Start () lineGO = new GameObject ("Line"); lineGO.AddComponent(); lineRenderer = lineGO.GetComponent (); lineRenderer.material = new Material (Shader.Find ("Mobile / Particles / Additive")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0);
La maggior parte delle proprietà impostate in questo blocco di codice sono facilmente comprensibili, SetColor
cambia il colore della linea e SetWidth
imposta la sua larghezza. Prestare particolare attenzione al SetVertexCount
linea. Questo metodo specifica il numero di punti della linea. Chiamando questo metodo con un numero maggiore di punti, possiamo aumentare la dimensione della linea. Questo diventerà più chiaro nel prossimo passo.
La linea è creata nel Aggiornare
metodo. Per prima cosa testiamo se il giocatore sta toccando lo schermo recuperando il touchCount
proprietà del Ingresso
classe. Se la proprietà è maggiore di quello 0, significa che c'è almeno un dito sullo schermo del dispositivo.
Manteniamo un riferimento al Toccare
oggetto per un accesso più facile e verificare in quale fase si trova attualmente. Ne abbiamo bisogno Mosso
fase per essere in grado di creare la linea.
Se il giocatore sta muovendo il dito sullo schermo, possiamo iniziare a creare un segmento di linea in quella posizione. Invochiamo il SetVertexCount
di nuovo il metodo per aumentare il numero massimo di segmenti della linea.
void Update () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0); if (touch.phase == TouchPhase.Moved) lineRenderer.SetVertexCount (i + 1); Vector3 mPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (i, Camera.main.ScreenToWorldPoint (mPosition)); i ++;
Con la linea in atto, aggiungiamo un collisore ad esso per aiutarci a rilevare una collisione con uno qualsiasi dei frutti. Il seguente frammento di codice crea e aggiunge un collettore di riquadri alla linea usando il AddComponent
metodo e imposta la sua posizione al lineRenderer
La posizione attuale. L'ultima riga di codice modifica la dimensione predefinita del collisore in modo che corrisponda alle dimensioni della linea.
BoxCollider bc = lineGO.AddComponent(); bc.transform.position = lineRenderer.transform.position; bc.size = new Vector3 (0.1f, 0.1f, 0.1f);
Rimuoviamo la linea quando il giocatore non tocca più lo schermo. Questo previene eventuali collisioni indesiderate con le mele.
Nel prossimo frammento di codice, controlliamo se la fase corrente di Toccare
l'oggetto è Conclusa
e imposta il conteggio dei vertici del lineRenderer
a 0. Questo rimuoverà i segmenti di linea correnti, ma non distruggerà l'oggetto, permettendoci di riutilizzarlo in seguito. Abbiamo anche resettato il io
variabile per consentire un uso successivo.
if (touch.phase == TouchPhase.Ended) / * Rimuovi Line * / lineRenderer.SetVertexCount (0); i = 0;
Una volta che la linea è stata rimossa, non abbiamo più bisogno dei collettori di scatole ad essa associati. Per prima cosa creiamo un array di BoxCollider
oggetti, memorizzando i box collider dell'oggetto gioco di linea. Quindi eseguiamo il loop sull'array, distruggendo ogni box collider.
/ * Rimuovi Line Colliders * / BoxCollider [] lineColliders = lineGO.GetComponents(); foreach (BoxCollider b in lineColliders) Destroy (b);
Diamo un'occhiata alla completa implementazione del LinesHandler
classe.
usando UnityEngine; usando System.Collections; public class LinesHandler: MonoBehaviour public Color c1 = Color.yellow; public Color c2 = Color.red; linea GameGObject privata; LineRenderer lineRenderer privato; int privato = 0; void Start () lineGO = new GameObject ("Line"); lineGO.AddComponent(); lineRenderer = lineGO.GetComponent (); lineRenderer.material = new Material (Shader.Find ("Mobile / Particles / Additive")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0); void Update () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0); if (touch.phase == TouchPhase.Moved) lineRenderer.SetVertexCount (i + 1); Vector3 mPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (i, Camera.main.ScreenToWorldPoint (mPosition)); i ++; / * Aggiungi Collider * / BoxCollider bc = lineGO.AddComponent (); bc.transform.position = lineRenderer.transform.position; bc.size = new Vector3 (0.1f, 0.1f, 0.1f); if (touch.phase == TouchPhase.Ended) / * Rimuovi Line * / lineRenderer.SetVertexCount (0); i = 0; / * Rimuovi Line Colliders * / BoxCollider [] lineColliders = lineGO.GetComponents (); foreach (BoxCollider b in lineColliders) Destroy (b);
È tempo di testare il gioco. stampa Comando-P per giocare a Unity. Se tutto funziona come previsto, allora sei pronto per i passaggi finali.
Quando sei soddisfatto del tuo gioco, è il momento di selezionare Costruisci le impostazioni dal File menu e fare clic su Impostazioni del giocatore pulsante. Questo dovrebbe far apparire il Impostazioni del giocatore nel Ispettore pannello in cui è possibile impostare i parametri per la propria applicazione.
Queste impostazioni sono dati specifici dell'applicazione che includono il creatore o la società, la risoluzione e la modalità