Visualizzazione post con etichetta accesso alle Components. Mostra tutti i post
Visualizzazione post con etichetta accesso alle Components. Mostra tutti i post

venerdì 1 luglio 2011

Accesso statico e dinamico alle variabili

 Unity3D, in particolare mediante il suo linguaggio di scripting Javascript (dalla sintassi simile a quella del noto linguaggio client-side) permette di accedere alle variabili nel seguente modo: di seguito presento i dettagli essenziali per programmare che saranno utili in varie circostanze, dagli script più essenziali a quelli più complessi.

var x : int;
var y : float;

Le variabili necessitano di una dichiarazione di tipo: in questo caso abbiamo dichiarato un intero x ed un float y. La prassi usuale per rendere attivo lo script (ad esempio prova.js) è definire un comportamento per un GameObject (un behaviour) associandolo mediante drag'n drop dal menù principale di Unity3D. E' bene mettere tutti gli script in un'apposita cartella, e poi è possibile fare quante associazioni si desidera: in particolare le due variabili sopra indicate saranno public, ovvero saranno modificabili dall'esterno e visibili dall'interfaccia di Unity.



E' inoltre possibile accedere direttamente da dentro lo script "proprietario" indicando il nome della variabile (ad esempio x=0; x++; e via dicendo), oppure da uno script all'altro mediante la seguente notazione, piuttosto intuitiva:

GetComponent(prova).x = 0;
GetComponent(prova).x++;

Contrariamente, se la variabile è dichiarata come statica (static var z: int; ad esempio), allora è sufficente utilizzare la dot notation (notazione con il punto) come se il nome dello script fosse il nome della classe:

prova.z++; prova.z=0;


martedì 28 giugno 2011

Accesso alle Component dei GameObject

Probabilmente il primo scoglio nella sintassi di scripting di Unity3D riguarda l'accesso alle diverse componenti: per me, che provengo dalla programmazione orientata agli oggetti (OO), si tratta di fare un piccolo sforzo concettuale nel comprendere che, ad esempio, il riferimento a this (l'oggetto corrente) è sottinteso, nel senso che viene realizzato: 
  • mediante gli alias transform, renderer, collider, animation, ... sul "this" (se scritti in minuscolo sono variabili o "oggetti", se in maiuscono invece sono le corrispondenti classi);
  • mediante drag'n drop  per riferimenti esterni.
Alias significa, in altri termini, che scrivere transform.Translate(1, 3, 2); equivale a GetComponent(Transform).Translate(1, 3, 2); inizialmente, inoltre, per ogni GameObject gli alias sono settati a null di default.



Le varie parti di un determinato oggetto sono riferite mediante dot notation (ad esempio translate.qualcosa="ciao")