I’ve been on working on instantiating 10 boxes and giving them some properties. They all get the same properties for now but it i want to be able to give them different props in the future. The code worked until I put it in #pragma strict mode… Now it says there is a Nullreferenceexeption when i ask for the obstakel.
for (var i : int = 0;i < 10; i++)
{
obstakel = Instantiate (obstakelPrefab, Vector3((i * space)+obstakelOffset, 0, 0), Quaternion.identity) as GameObject;
var tempScript:Obstakel;
tempScript = obstakel.GetComponent(Obstakel) as Obstakel;
tempScript.SetObstakel(trigger,snelheid);
}
Any ideas on what could solve my problems are very welcome!
I would assume that obstaklePrefab is not of type GameObject.
By the way, in Unity 3.4 you can just write this:
var obstakelPrefab : GameObject;
function Start () {
for (var i = 0; i < 10; i++)
{
obstakel = Instantiate (obstakelPrefab, Vector3((i * space)+obstakelOffset, 0, 0), Quaternion.identity);
var tempScript = obstakel.GetComponent(Obstakel);
tempScript.SetObstakel(trigger, snelheid);
}
}
Instantiate returns the type of the prefab being instantiated (instead of Object as before), and GetComponent returns the type of the component (instead of Component as before).
@YvdB: You can still do it in one line on 3.3 as long as you cast appropriately: (Instantiate (obstakelPrefab, Vector3((i * space)+obstakelOffset, 0, 0), Quaternion.identity) as GameObject).(GetComponent(Obstakel) as Obstakel).SetObstakel(trigger, snelheid); That's maybe a bit much for one line of code though.
@YvdB: You can still do it in one line on 3.3 as long as you cast appropriately: (Instantiate (obstakelPrefab, Vector3((i * space)+obstakelOffset, 0, 0), Quaternion.identity) as GameObject).(GetComponent(Obstakel) as Obstakel).SetObstakel(trigger, snelheid); That's maybe a bit much for one line of code though.
– Eric5h5