- 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