cycling UV once not forever...

Trying to to get it to just to cycle once … like a cannon fire and can call on demand. If anyone out there can help me i would be thankful.

//vars for the whole sheet 
var colCount    : int =  4; 
var rowCount    : int =  4; 

//vars for animation 
var rowNumber   : int =  0; //Zero Indexed 
var colNumber   : int =  0; //Zero Indexed 
var totalCells  : int =  4; 
static var fps  : int = 24; 
static var timer  : int = 3; 
static var fpsSwitch  : int = 0; 
var offset  : Vector2;  //Maybe this should be a private var 

//Update 
function Update () { 
   if(fpsSwitch==1){ 
      //timer=3; 
         timer = timer - Time.deltaTime; 
   print (timer); 
   SetSpriteAnimation(colCount,rowCount,rowNumber,colNumber,totalCells,testuremoveingUV.fps);
if(timer <= 0.0){ 
    
     

fpsSwitch=0; 
timer=3; 

}    
      } 
   } 

//SetSpriteAnimation 
function SetSpriteAnimation(colCount : int,rowCount : int,rowNumber : int,colNumber : int,totalCells : int,fps : int){ 

    // Calculate index 
    var index : int = Time.time * fps; 
    // Repeat when exhausting all cells 
   // index = index % totalCells; 
    
    // Size of every cell 
    var size = Vector2 (1.0 / colCount, 1.0 / rowCount); 
    
    // split into horizontal and vertical index 
    var uIndex = index % colCount; 
    var vIndex = index / colCount; 
  
    // build offset 
    // v coordinate is the bottom of the image in opengl so we need to invert. 
 offset = Vector2 ((uIndex+colNumber) * size.x, (1.0 - size.y) - (vIndex+rowNumber) * size.y); 
    
 renderer.material.SetTextureOffset ("_MainTex", offset); 
   renderer.material.SetTextureScale  ("_MainTex", size); 
}

I just want this to be a like a cannon fire … fire once go though 41 images on this one texture and stop and when I call it again it does the same thing ??? any help out there???