- Home /
Update() Function only fires once.
So I have a problem, my update function inside one of my scripts which flickers a light on and off only works once, here is the code:
 #pragma strict
 
 var timer = 0;
 var times = 0;
 
 public var txt : GameObject;
 
 function Start () {
 
 }
 
 function Update () {
 
     if(this.timer <= 0) {
             
         timer = 10;
         
         var light : Light;
                     
         light = this.GetComponent("Light");
 
         light.active = !light.active;
                     
     } else {
         this.timer--;
     }
         
     this.times++;    
     
 }
I'm not sure why this would be happening, any suggestions?
Answer by Kryptos · Sep 03, 2012 at 12:31 PM
active is deprecated because it modifies the activation of the Gameobject not the component (this is a guess, hope someone can confirm). Therefore the script is also deactivated. You need to use enabled instead.
Furthermore, you can optimize your code by caching the reference to the Light component:
 #pragma strict
 
 var timer : int = 0;
 var times : int = 0;
 
 public var txt : GameObject;
 var myLight : Light;
 
 function Start () {
     myLight = this.GetComponent("Light");
 }
 
 function Update () {
 
     if(this.timer <= 0) {
 
        timer = 10;
  
        myLight.enabled = !myLight.enabled;
 
     } else {
        this.timer--;
     }
 
     this.times++;  
 
 }
You will need to modifiy a bit your script because it is framerate-dependent. Bu this is another issue that you can ask in another question.
Your answer
 
 
             Follow this Question
Related Questions
Check if key is pressed once 1 Answer
How do I change a spot light to a point light by pressing a key? 1 Answer
How to run a update function once 3 Answers
Call A Function At A Certain Time 1 Answer
Update Just Once 3 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                