- Home /
C# setting instantiated prefab variables from another script.
Hello, I'm attempting to make a GameObject prefab instantiate when a certain object is destroyed, however, I need to be able to alter the variables instantly upon creating it, my issue comes when I'm trying to access the variables, I don't have a clue how to do this on instantiated objects, here is all the needed base code in the function:
 void HitByRay()
 {
     GameObject go = (GameObject)Instantiate (thingamabob, transform.position, transform.rotation);
     Destroy (gameObject);
 }
How am I to go about setting the variables on the particularly spawned prefab instance?.
Answer by wibble82 · Apr 25, 2014 at 05:24 PM
Presumably you have some script on your instantiated object? Maybe a 'Thing' script. So you would do:
 void HitByRay()
 {
     GameObject go = (GameObject)Instantiate (thingamabob, transform.position, transform.rotation);
  
     //get the thing component on your instantiated object
     Thing mything = go.GetComponent<Thing>();
 
     //set a member variable (must be PUBLIC)
     mything.somepublicmember = 10; 
 
     //call a member function (must be PUBLIC)
     mything.somememberfunction();
 
     //maybe access one of the built in components (such as a rigid body if it has one)
     go.rigidbody.velocity = new Vector3(10,0,0);
  
     //destroy the original object as normal
     Destroy (gameObject);
 }
FYI: In that code, I'm assuming that whatever script that contains the HitByRay function has a member called thingamabob, which is a GameObject, and has been set (probably in the editor) to reference an existing prefab, which contains a Thing component.
"mything" script is inside the thingamabob prefab.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                