Framerate getting progressively slower

I have a script that changes a texture overtime continuously. When I use it though, the framerate will slow down in pauses after around 20-30 seconds of steady framerate. Here is the script:

var NewScale : boolean = false;
var NewScaleSizeX : float;
var NewScaleSizeY : float;
var MoveTexture1 : boolean = false;
var MoveTexture2 : boolean = false;
var MoveReflection : boolean = false;
var ScalingUp : boolean = false;
var ScalingDown : boolean = false;
var ScalingUp2 : boolean = false;
var ScalingDown2 : boolean = false;
var TimeForward : boolean = true;
var scrollSpeed : float = 0.5;
var scrollSpeed2 : float = -0.5;
var scrollSpeed3 : float = 0.8;
var Active : boolean = true;
var Material1 : Material;
var Material2 : Material;
var Material3 : Material;
var Material4 : Material;
var Material5 : Material;
var Material6 : Material;
var Material7 : Material;
var Material8 : Material;
var Material9 : Material;
var Material10 : Material;
var Material11 : Material;
var Material12 : Material;
var Material13 : Material;
var Material14 : Material;
var Material15 : Material;
var Seconds1 : float;
var Seconds2 : float;
var Seconds3 : float;
var Seconds4 : float;
var Seconds5 : float;
var Seconds6 : float;
var Seconds7 : float;
var Seconds8 : float;
var Seconds9 : float;
var Seconds10 : float;
var Seconds11 : float;
var Seconds12 : float;
var Seconds13 : float;
var Seconds14 : float;
var Seconds15 : float;
var SecondsUntillReverse : float = 3;
private var Starting : boolean = false;

function Awake(){
if(Active == true){
StartCoroutine(“MaterialSequence”);
}
if(MoveTexture2 == true){
StartCoroutine(“TimeAlter”);
StartCoroutine(“TilingSequence”);
}
if(MoveReflection == true){
StartCoroutine(“TimeAlter”);
StartCoroutine(“TilingSequence2”);
}
if(NewScale == true){
Material1.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material1.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material1.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material2.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material2.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material2.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material3.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material3.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material3.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material4.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material4.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material4.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material5.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material5.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material5.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material6.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material6.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material6.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material7.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material7.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material7.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material8.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material8.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material8.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material9.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material9.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material9.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material10.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material10.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material10.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material11.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material11.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material11.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material12.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material12.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material12.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material13.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material13.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material13.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material14.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material14.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material14.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));

Material15.SetTextureScale (“_MainTex”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material15.SetTextureScale (“_BumpMap”, Vector2(NewScaleSizeX, NewScaleSizeY));
Material15.SetTextureScale (“_Cube”, Vector2(NewScaleSizeX, NewScaleSizeY));
}
}

function StartShading(){
if(Starting == true){
MaterialSequence();
}
}

function StartTiling(){
if(Starting == true){
TilingSequence();
TilingSequence2();
}
}

function MaterialSequence(){
Starting = false;
renderer.sharedMaterial = Material1;
yield WaitForSeconds(Seconds1);
renderer.sharedMaterial = Material2;
yield WaitForSeconds(Seconds2);
renderer.sharedMaterial = Material3;
yield WaitForSeconds(Seconds3);
renderer.sharedMaterial = Material4;
yield WaitForSeconds(Seconds4);
renderer.sharedMaterial = Material5;
yield WaitForSeconds(Seconds5);
renderer.sharedMaterial = Material6;
yield WaitForSeconds(Seconds6);
renderer.sharedMaterial = Material7;
yield WaitForSeconds(Seconds7);
renderer.sharedMaterial = Material8;
yield WaitForSeconds(Seconds8);
renderer.sharedMaterial = Material9;
yield WaitForSeconds(Seconds9);
renderer.sharedMaterial = Material10;
yield WaitForSeconds(Seconds10);
renderer.sharedMaterial = Material11;
yield WaitForSeconds(Seconds11);
renderer.sharedMaterial = Material12;
yield WaitForSeconds(Seconds12);
renderer.sharedMaterial = Material13;
yield WaitForSeconds(Seconds13);
renderer.sharedMaterial = Material14;
yield WaitForSeconds(Seconds14);
renderer.sharedMaterial = Material15;
yield WaitForSeconds(Seconds15);
Starting = true;
StartShading();
}

function TilingSequence(){
Starting = false;
if(MoveTexture2 == true){
ScalingUp = true;
yield WaitForSeconds(SecondsUntillReverse);
ScalingUp = false;
ScalingDown = true;
yield WaitForSeconds(SecondsUntillReverse);
ScalingDown = false;
}
Starting = true;
StartTiling();
}

function TilingSequence2(){
Starting = false;
if(MoveReflection == true){
ScalingUp2 = true;
yield WaitForSeconds(SecondsUntillReverse);
ScalingUp2 = false;
ScalingDown2 = true;
yield WaitForSeconds(SecondsUntillReverse);
ScalingDown2 = false;
}
Starting = true;
StartTiling();
}

function TimeAlterStart(){
if(TimeForward == false){
TimeAlter();
}
}

function TimeAlter(){
TimeForward = true;
yield WaitForSeconds(SecondsUntillReverse);
TimeForward = false;
yield WaitForSeconds(SecondsUntillReverse);
TimeAlterStart();
}

function Update () {
var NewTime : float = 0.1;

if (TimeForward == true){
NewTime = Time.deltaTime;
}
if (TimeForward == false){
NewTime = Time.deltaTime;
}
var Tiling1 : float = NewTime * scrollSpeed2;
var Tiling2 : float = NewTime * scrollSpeed3;
var offset : float = Time.time * scrollSpeed;
if(Starting == false){
StopCoroutine(“StartShading”);
}
if(MoveTexture1 == true){
renderer.material.SetTextureOffset (“_MainTex”, Vector2(offset,0));
}
if(ScalingUp == true){
renderer.material.SetTextureScale (“_BumpMap”, Vector2(Tiling1,Tiling1));
}
if(ScalingDown == true){
renderer.material.SetTextureScale (“_BumpMap”, Vector2(Tiling1,Tiling1));
}
if(ScalingUp2 == true){
renderer.material.SetTextureScale (“_Cube”, Vector2(Tiling2,Tiling2));
}
if(ScalingDown2 == true){
renderer.material.SetTextureScale (“_Cube”, Vector2(Tiling2,Tiling2));
}
}

Oh my. Do yourself a favor and use arrays and loops. Should shorten your code by about 80% and make it much more readable/manageable.

Also, please post code in code tags.

[CODE][/CODE]

You should potentially stop to generate new materials all the time by messing around on the materials scale properties when its on a renderer. Either change the sharedMaterial or on the material itself. (yes it will break batching but that will happen anyway if you don’t want it to be applied to all using the material)

I apologize about the code, I couldn’t spot the button to open a separate space for it. I can make a material change itself? I will look into it and loops is something I just recently learned so I can put that to use, arrays will take me a bit longer but I will give it a try also. Thanks