- Home /
Question by
violence · Nov 09, 2013 at 06:40 PM ·
javascriptinstantiateprefabsarrays
Accessing variable of instantiated prefab inside array in javascript
I have two scripts, one has my main game code and is attached to an empty game object (menu.js), the other is attached to a prefab (tilescript.js). What I am trying to do is instantiate a prefab and place it into an array. Then when the player pushes the end turn button, calcResources() runs and adds the basegold value from the prefab to the players gold variable in menu.js. The error I'm getting is "basegold is not a member of object."
The Debug.Log(Tile) in calcResources returns:
Tile(Clone) (UnityEngine.Transform) UnityEngine.Debug:Log(Object)
This is Menu.js
#pragma strict
//resource variables;
var gold : int;
var stone : int;
var timber : int;
var population : int;
var Tile : Transform;
//array of land tiles
var landtiles = new Array();
function Start(){
//instantiates home tile and adds to array of all tiles
landtiles.Add(Instantiate (Tile, Vector3(0, 0, 0), Quaternion.identity));
}
function OnGUI()
{
//main stat hud that runs across top
GUI.Box (Rect (10,10,1000,26),"");
GUI.Label(Rect (825, 13, 200, 20), "Gold: " + gold.ToString() );
GUI.Label(Rect (745, 13, 200, 20), "Timber: " + timber.ToString() );
GUI.Label(Rect (660, 13, 200, 20), "Stone: " + stone.ToString() );
GUI.Label(Rect (550, 13, 200, 20), "Population: " + population.ToString() );
if (GUI.Button (Rect (905,13,90,20),"End Turn ")) {
calcResources();
}
//gui screen 1
GUI.Box (Rect (10,50,1000,900),"");
}
function calcResources()
{
for (Tile in landtiles){
Debug.Log(Tile);
gold = gold + Tile.basegold;
}
}
This is tilescript.js
#pragma strict
var owner : String;
var basegold : int;
var basestone : int;
var basetimber : int;
var population : int;
var land : int;
function Start () {
}
function Update () {
}
Comment
Best Answer
Answer by violence · Nov 09, 2013 at 08:11 PM
Fixed it by changing the following in the calcResources function in menu.js
function calcResources()
{
for (Tile in landtiles){
Debug.Log(Tile);
gold = gold + Tile.basegold;
}
}
To
function calcResources()
{
for (var i = 0; i <= landtiles.length; i++){
var x = landtiles[i];
gold = gold + Tile.GetComponent(tilescript).basegold;
}
}