- Home /
How can I modify a variable on an instance of a prefab after I created it?
When I manually add the script
var degrees = 20;
function Update() { transform.RotateAround (Vector3.zero, Vector3.up, degrees * Time.deltaTime); }
to the prefab itself I can get the rotation to work. However, when I try and add the rotation inside this prefab creation script I can not get it to work. Moreover, would this have to be inside a update function or how would I get it working all the time?
Essentially what I am trying to do is to slow the rotation as prefab are plotted further away from a given origin. Any help would be greatly appreciated.
var planetPrefab: GameObject;
function Start() { j = 10; while (j < 100) { var cloneplanet: GameObject; if (planet_class <=100) { cloneplanet = Instantiate(planetPrefab, Vector3(sx, sy , sz + j), Quaternion.identity); // I want to modify the 'degrees' variable of the script attached to 'cloneplanet' here! j = j + 5; }
} }
Answer by duck · Feb 03, 2010 at 10:48 PM
Each time you create an instance of the prefab, set the 'degrees' variable after creating it, like this:
cloneplanet.GetComponent(NameOfFirstScript).degrees = 50/j;
Answer by Jaap Kreijkamp · Feb 03, 2010 at 10:50 PM
If you want to have it permanently attached to the prefab (making it part of the prefab), just add the script to the prefab in the scene, next do menu GameObject
-> Apply changes to prefab
. You can set the degrees value using:
GetComponent(NameOfScript).degrees = 50 / j;
If you want to add script at runtime you can do:
Make sure the RotateAround script name has no spaces in there and preferably start with an uppercase letter. In the code example below I assume you named it RotateAround.
function Start() {
j = 10;
while (j < 100) {
var cloneplanet: GameObject;
if (planet_class <=100) {
cloneplanet = Instantiate(planetPrefab, Vector3(sx, sy , sz + j), Quaternion.identity);
RotateAround rotateAround = cloneplanet.gameObject.AddComponent(RotateAround);
rotateAround.degrees = 50 / j;
j = j + 5;
}
}
}
Your answer
Follow this Question
Related Questions
Get the Vector position of the player object when clicking another object C# 1 Answer
An Inheritance question. ( accessing non-static members from a script component) 2 Answers
Set Rigidbody variable to Prefab using code 1 Answer
Enemy only chasing pre-fab's original location, not instance's 2 Answers