Unity3D Game Engine – Unity3D – Inventory System – Send and Search into Inventory – JavaScript
Create a Scene with:
– Main Camera
– GameController (Empty game object), attach:
– GameControllerScript.js
– Inventory.js
– Cube, Sphere, Cylinder, attach:
– SendToInventory.js
Inventory.js
#pragma strict var inventory = new ArrayList(); // declare the inventory ArrayList function Start () { }// END Start() function Update () { }// END Update()
GameControllerScript.js
#pragma strict var displayInventory: GUIText; // Assign in Inspector private var inventoryScript : Inventory; // variable to store another script function Awake () { inventoryScript = GetComponent(Inventory); // get script 'Inventory' }// END Awake() function Start(){ }// END Start() function Update(){ displayInventory.text = "Inventory: " + Array(inventoryScript.inventory).ToString();//display inventory by converting it to an array }// END Update()
SendToInventory.js
#pragma strict var myName : String;// to store the object name private var inventory : Inventory; // store the GameController>Inventory component function Start () { myName = this.gameObject.name; // get the object name Debug.Log(myName);// show the name of this object // inserisco in una variabile l'oggetto con nome GameController, lo slash serve perchè non ha parent var gameControllerObject : GameObject = GameObject.Find ("/GameController"); // se l'oggetto esiste lo inserisco in una variabile if (gameControllerObject != null) { inventory = gameControllerObject.GetComponent (Inventory); } // se l'oggetto non esiste restituisce un messaggio di errore if (gameControllerObject == null) { Debug.Log ("Cannot find 'Inventory' script"); } }// END Start() function Update () { }// END Update() function OnMouseDown () { inventory.inventory.Add(myName); // GameController>Inventory component.inventoryArrayList().Add(game object name) Destroy(gameObject); // destroy the game object because I have already sent it to the inventory }// END OnMouseDown()
Play, click over Sphere, Cube, Cylinder, the inventory will be updated.
For italian peolple: come funziona?
1. Inventory.js
– dichiaro Array List(), il mio inventario
2. GameControllerScript.js
– ottiene il componente Inventory.js
– visualizza il contenuto dell’inventario
3. SendToInventory.js
– ottiene il componente Inventory.js
– al click del mouse sull’oggetto, invia il nome dell’oggetto corrente all’inventario
– distrugge l’oggetto appena inserito nell’inventario, per non rischiare di inserirlo due volte. Volendo si può anche semplicemente disabilitare il Collider per evitare la registrazione di altri click.
Search inside ArrayList
Change GameControllerScript.js:
#pragma strict var displayInventory: GUIText; // Assign in Inspector private var inventoryScript : Inventory; // variable to store another script function Awake () { inventoryScript = GetComponent(Inventory); // get script 'Inventory' }// END Awake() function Start(){ }// END Start() function Update(){ displayInventory.text = "Inventory: " + Array(inventoryScript.inventory).ToString();//display inventory by converting it to an array InventorySearch(); }// END Update() function InventorySearch(){ // search string START ---------------- var howBig = inventoryScript.inventory.Count; var n : int = 0; for (n = 0; n < howBig; n++){ if ( inventoryScript.inventory[n] == "Cube" ) Debug.Log("Find Cube"); } // search string END ------------------ }// END InventorySearch()
Conver ArrayList to Array and Search inside Array
Change GameControllerScript.js:
#pragma strict var displayInventory: GUIText; // Assign in Inspector private var inventoryScript : Inventory; // variable to store another script function Awake () { inventoryScript = GetComponent(Inventory); // get script 'Inventory' }// END Awake() function Start(){ }// END Start() function Update(){ displayInventory.text = "Inventory: " + Array(inventoryScript.inventory).ToString();//display inventory by converting it to an array InventorySearch(); }// END Update() function InventorySearch(){ // Convert ArrayList() to Array var newarr = new Array (Array(inventoryScript.inventory)); Debug.Log(newarr); // search string START ---------------- var n : int = 0; for (n = 0; n < newarr.length; n++){ if ( newarr[n] == "Cube" ) Debug.Log("Find Cube"); } // search string END ------------------ }// END InventorySearch()
Notice:
function InventorySearch(){ // Convert ArrayList() to Array var newarr = new Array (Array(inventoryScript.inventory)); Debug.Log(newarr); // search string START ---------------- var n : int = 0; for (n = 0; n < newarr.length; n++){ if ( newarr[n] == "Cube" ) Debug.Log("Find Cube"); } // search string END ------------------ }// END InventorySearch()