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?

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.