How does classes work in Unity?
Create an ‘Empty Object’ and attack Inventory.cs
// Inventory.cs using UnityEngine; using System.Collections; public class Inventory : MonoBehaviour // il nome del file e della classe sono uguali { // Creating an Instance (an Object) of the Stuff class public Stuff myStuff = new Stuff(10, 20, 30, 40); // il nome dell'oggetto è uguale al nome della classe è uguale al costruttore // We can create infinite Instances public Stuff myOtherStuff = new Stuff(50, 60, 70, 80); public Stuff myOtherStuffTwo = new Stuff(); // senza parametri assegna i valori di default public Stuff myOtherStuffThree = new Stuff(10.2F); // in base alla natura dei parametri riconosce il metodo, qui cerca lo Stuff() che accetta FLOAT void Start() { Debug.Log(myStuff.bullets); // 10 Debug.Log(myOtherStuff.grenades); // 60 myOtherStuff.grenades = 100; // cambio il valore dell'oggetto Debug.Log(myOtherStuff.grenades); // 100 Debug.Log(myOtherStuffTwo.grenades); // 2 Debug.Log(myOtherStuffThree.magicEnergy); // 10.2 } public class Stuff // nome della classe { // proprietà public int bullets; public int grenades; public int rockets; public int fuel; public float magicEnergy; // metodo con l'arrivo dei parametri public Stuff(int bul, int gre, int roc, int fue) // nome del costruttore uguale a quello della classe { bullets = bul; grenades = gre; rockets = roc; fuel = fue; } // metodo senza l'arrivo dei parametri public Stuff() // nome del costruttore uguale a quello della classe { bullets = 1; grenades = 2; rockets = 3; fuel = 4; } public Stuff(float magicen) { magicEnergy = magicen; } } }// END Inventory : MonoBehaviour
Rules:
– Inventory.cs and public class Inventory have the same name
– public Stuff myStuff = new Stuff(10, 20, 30, 40); same name in the instance call Stuff
– public Stuff() same name for the method Stuff
– public Stuff myOtherStuffThree = new Stuff(10.2F); Unity recognize automatically the method he needs reading the type of parameters passed, this technique is called ‘Overloading’.