Null Reference Exception when Trying to get script of newly instantiated Gameobject


Having some trouble getting the script attached to a newly instantiated gameobject. I’ve used similar code to set the attributes of instantiated bullets without experiencing the same problem.

There are awake and start instructions in the instantiated object’s script (The script I am trying to get). The awake instruction is processed, then the debug informs me that the script is null (Line 18). Then the start functions are processed.

Is it possible that the script attached to this newly instantiated gameobject can’t be retrieved because it hasn’t fully initialised, or because I am trying to change some of the values (that may be in the process of being initialised?

I’ve attached part of the debug below.

Any ideas on fixing this? Thanks for your time.

This is the code I’m using to instantiate the gameObjects

// Place a turret for each element in TurretScriptList
		for(int i = 0 ; i < turretScriptList.Count ; i++)
			// Instantiate and get reference
			GameObject turret = (GameObject)Instantiate(turretPrefab2, turretScriptList*.GetTurretPosition(), Quaternion.identity);*
  •  	if(turret == null)*
  •  	{*
  •  		Debug.Log("TurretSceneScript1.PlaceExistingTurrets: Turret is null");	*
  •  	}*
  •  	// Get the type of the turret from turretScriptList*

_ string turretType = turretScriptList*.GetTurretType();*_

* // Get the turret’s script*
* TurretGunScript currentTurretScript = (TurretGunScript) turret.GetComponent(“TurretGunScript”);*

* if(currentTurretScript == null)*
* {*
* Debug.Log(“TurretSceneScript1.PlaceExistingTurrets: currentTurretScript is null”); *
* }*

* // Set the turret type on the newly instantiated Turret*
* currentTurretScript.turretType = turretType;*

* // Set the texture appropriate to that type*
* currentTurretScript.SetTurretTexture();*
* }*

Are you sure that you set correctly the turretPrefab2? I can’t see any problem. So I thought that maybe you could have forgotten to assign the prefab.