- Home /
Do something only once
I have this script, it creates an object instance once per frame under a condition inside the Update function. What i want is to instanciate this object just once when the condition is true.
var powered = false;
var powerFrom : Transform;
var redLaser : Transform;
function Update () {
if (powerFrom.GetComponent(Fonte).powered == true){
powered = true;
}else{
powered = false;
}
var redLaserClone : Transform;
if (powered == true){
redLaserClone = Instantiate(redLaser, transform.position, transform.rotation);
}
}
Answer by fafase · Jul 18, 2012 at 09:16 AM
var neverDone :boolean;
var powerFrom : Transform;
var redLaser : Transform;
var checking:Fonte;
function Start(){
checking =powerFrom.GetComponent(Fonte);
neverDone = true;
}
function Update () {
if (neverDone){
if (checking.powered == true){
var redLaserClone = Instantiate(redLaser, transform.position, transform.rotation);
neverDone = false;
}
}
}
neverDone is true so it enters the if statement every frame, when powered is true, the instantiation happens and neverDone is false, so the whole if statement won't be done again.
I also moved a few commands to optimize your code. GetComponent is not recommended in the update as it is quite expensive. Get the component in the start and place it in a variable to access it faster.
$$anonymous$$AN YOU ARE AWESO$$anonymous$$E!!!!! THAN$$anonymous$$S THAN$$anonymous$$S THAN$$anonymous$$S!!!
Your answer
Follow this Question
Related Questions
Shoot only once when clicked 1 Answer
How can I increase the level Counter only once when player reached a certain amount of Score 2 Answers
OnTriggerEnter only logs Debug.Log once, but is otherwise working fine 1 Answer
Playing an Animation only once Unity 4 0 Answers
How to make my espawn delay trigger to work more than once. 2 Answers