editable array length

can anyone help?
i have a Array this bit

class DemoData
{
	 var name : String;
	 var id : int;
     var x : float;
     var y : float;
     var z : float;
	 var Rx : float;
     var Ry : float;
     var Rz : float;
	 var iChild = new ChildData[50]; 
}
class ChildData
{ 
	 var name : String;
	 var id : int;
     var x : float;
     var y : float;
     var z : float;
	 var Rx : float;
     var Ry : float;
     var Rz : float;
}


 class UserData
 {

   public var iUser = new DemoData[500];
}

and here happans the error

	for (g = 0 ; g < gameobjects.length; g++){
	  myData.iUser[g].name = gameobjects[g].name;
	  myData.iUser[g].id = gameobjects[g].GetInstanceID();
	  myData.iUser[g].x = gameobjects[g].transform.position.x;
      myData.iUser[g].y = gameobjects[g].transform.position.y;
      myData.iUser[g].z = gameobjects[g].transform.position.z;
	  myData.iUser[g].Rx = gameobjects[g].transform.rotation.x;
	  myData.iUser[g].Ry = gameobjects[g].transform.rotation.y;
	  myData.iUser[g].Rz = gameobjects[g].transform.rotation.z;
		for(e = 0 ; e <gameobjects[g].transform.childCount; e++) {
			  myData.iUser[g].iChild[e].name = gameobjects[g].transform.GetChild(e).name;
			  myData.iUser[g].iChild[e].id = gameobjects[g].transform.GetChild(e).GetInstanceID();
			  myData.iUser[g].iChild[e].x = gameobjects[g].transform.GetChild(e).localPosition.x;
			  myData.iUser[g].iChild[e].y = gameobjects[g].transform.GetChild(e).localPosition.y;
			  myData.iUser[g].iChild[e].z = gameobjects[g].transform.GetChild(e).localPosition.z;
			  myData.iUser[g].iChild[e].Rx = gameobjects[g].transform.GetChild(e).localRotation.x;
			  myData.iUser[g].iChild[e].Ry = gameobjects[g].transform.GetChild(e).localRotation.y;
			  myData.iUser[g].iChild[e].Rz = gameobjects[g].transform.GetChild(e).localRotation.z;
		}
	}

this is the error

NullReferenceException: Object reference not set to an instance of an object
NewBehaviourScript.OnGUI () (at Assets\NewBehaviourScript.js:112)

thanks for your help

demonicmetal cs

Looks like you’ve not initialised your myData.iUser variables, make sure you’ve called your constructor on it at the start of each iteration of your loop.

i.e.

for (g = 0; g < gameobjects.length; g++)
{
myData.iUser[g] = new DemoData();
myData.iUser[g].name = gameobjects[g].name;
...

thanks it works

an other question

public var iUser = new DemoData[500];

this makes a array of 500

is there a way to make it so there the lenght is changeble?

demonicmetal cs

I’m a C# developer rather than javascript, in C# there is a List that you can use in System.Generics. In your case you would type something like

Initialise the collection

public List<DemoData> iUser = new List<DemoData>;

Setup of the objects themselves

for (g = 0; g < gameobjects.length; g++) 
{ 
    DemoData demoData = new DemoData();
    demoData.name = gameobjects[g].name;
    ....
    ....
    myData.Add(demoData);
}

but how does it work in java??

becaus it says Add is not a member of iUser

What is myData ?

sorry i did not mension this

function Awake () { 
  
      // we need soemthing to store the information into
      myData=new UserData();
   }

ts is myData

I assume you mean javascript.

If you need resizable arrays, use javascript arrays or the ArrayList class.