Imparare C#Imparare Unity

Dichiarazione e Inizializzazione

Tra qualche lezione vedremo le classi più usate in Unity, i vector2 (punti in una spazio 2D) i vector3 (punti in uno spazio 3D) e molti altri.
Per usarle dovremmo dichiararle ed inizializzarle, come abbiamo fatto per le variabili viste fin’ora.

Prima però dobbiamo fare una precisazione in termini;
Dichiarare e Inizializzare sono cose differenti.

Dichiarare una variabile significa specificare “la sua esistenza”.  Ovvero, dichiariamo che quella variabile esisterà e la utilizzeremo nel nostro script.

int Pippo;


Inizializzare
significa invece assegnargli un valore e può essere fatto solo dopo la sua dichiarazione (oppure contemporaneamente).

pippo=2;

Come detto potremmo fare entrambe le cose contemporaneamente, su un’unica riga:

int pippo=2;

Ma attenzione, perché quando faremo la dichiarazione di una variabile, quella variabile sarà disponibile solo all’interno dello scopo (o contesto) in cui l’abbiamo dichiarata.

Che cos’è lo Scopo?
Semplicemente, lo spazio racchiuso tra le parentesi graffe. Si tratta del contesto in di un certo pezzo di codice delimitato dalle parentesi graffe. Dunque una classe ha il suo scopo, un metodo ha il suo scopo.

Facciamo un esempio dove dichiariamo una variabile nel contesto (scopo) della classe.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NuovoScript : MonoBehaviour { //Apertura scopo della classe

	int pippo; //Dichiariamo una variabile di tipo int
	
	void Start () {//Apetura scopo del metodo Start
	
		pippo = 2; //Inizializiamo la variabile
		
	}//Chiusura scopo del metodo Start
	

	void Update () { //Apetura scopo del metodo Update
	    
	    pippo= 5;//Cambiamo il valore della variabile
		
	}//Chiusura scopo del metodo Update
	
} //Chiusura scopo della classe

In questo esempio abbiamo dichiarato la variabile pippo fuori da ogni metodo, direttamente nello scopo della classe NuovoScript.
In questo modo la variabile sarà accessibile per tutta la calsse e in ogni metodo di essa.
Infatti nell’esempio l’abbiamo richiamata nel metodo Start e poi cambiata dentro il metodo Update senza ricevere nessun errore. La variabile pippo sarà disponibile in ogni punto della classe, che sia in un metodo, in un’iterazione (per esempio un if) o altro.

Se invece avessimo dichiarato la variabile dentro il metodo Start, non avremmo potuto usarla dentro il metodo Update.
Tipo:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NuovoScript : MonoBehaviour { //Apertura scopo della classe


	
	void Start () {//Apetura scopo del metodo Start
	
		int pippo = 2; //Dichiariamo e Inizializiamo la variabile
		
	}//Chiusura scopo del metodo Start
	

	void Update () { //Apetura scopo del metodo Update
	    
	    pippo= 5;//Cambiamo il valore della variabile
		
	}//Chiusura scopo del metodo Update
	
} //Chiusura scopo della classe

Ci sarebbe ritornato un errore che ci informa appunto che la variabile pippo non esiste in quel contesto.

Dunque ricordiamoci di dichiarare le nostre variabili appena aperta la classe, così da poterla usare per l’intero script senza problemi.

La porola chiave new

Non l’abbiamo incontrata, ma lo faremo presto.
Quando dovremmo creare un nuovo oggetto di una determinata classe, dovremmo usare la parola chiave  new. Questo appunto, solo se la variabile è “nuova”, cioè non è stata mai inizializzata nell’ambito della classe.

Prendiamo per esempio la classe proprietaria di Unity Vector3, ovvero una classe che identifica un punto nello spazio ed ha bisogno delle tre coordinate X,Y,Z.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NuovoScript : MonoBehaviour {

	Vector3 posizione; //Dichiariamo una variabile di tipo Vector3
	
	void Start () {
		posizione = new Vector3(10, 10, 10); //Inizializiamo la variabile
	}
	

	void Update () {
		
	}
	
}

Vedremo in seguito come gestire i Vector3, sappiate sin da ora che sono di fondamentale importanza in Unity (e qualsiasi altro engine 3D) perché identificano la posizione di qualunque oggetto nella scena, oltre che alla scala di un oggetto. Dunque sarà necessario anche per muovere i gameObjects.
Potremmo vedere il valore della posizione di ciascun’oggetto anche  all’interno del componente Transform.

Position è appunto un Vector3 composto dalle tre componenti X,Y,Z.

Conclusioni finali sulla dichiarazione e l’inizializzazione

Non abbiamo finito di parlare di quest’argomento. Dovremmo vedere nel dettaglio i modificatori d’accesso come pubblic e private, così come il modificatore static.
Li vedremo con un approfondimento sulle variabili.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *