Screen fading while changing scenes doesn't seem to work. Help !

I am trying to change the scene of my game with a little fade effect which will happen on collisions.
I have two script one with fade and other is called changelevel where when an object touches another object the screen should give me a black fade and then change to second scene. There are 0 errors in my code but the effect doesn’t seem to work although the scene is getting changed. I have attached the scripts on objects too ( assuming that it doesn’t matter on which two of the object you put it ).

//Code for fade
using UnityEngine;
using System.Collections;

public class fading : MonoBehaviour {

	// Use this for initialization
	public Texture2D fadeOutTexture ; // the texture that will overlay the screen , this can be a black screen or loading page
	public float fadeSpeed ; 		// the speed of the screen fade.

	private int drawDepth = -1000;  //the texture order in the draw hierarchy ; a low number means it renders on top
	private float alpha = 1.0f;
	private int fadeDir = -1;

	void OnGui(){
		
		alpha += fadeDir * fadeSpeed * Time.deltaTime;
		
		alpha=Mathf.Clamp01(alpha);

		
		GUI.color = new Color(GUI.color.r,GUI.color.g,GUI.color.b,alpha);	//set the alpha value
		GUI.depth = drawDepth;							// make the black texture render on top
		GUI.DrawTexture(new Rect (0,0,Screen.width,Screen.height),fadeOutTexture);	//draw texture to fit the screen.
	}
	
	public float BeginFade (int direction) {
		fadeDir=direction;
		return(fadeSpeed);
	}
	
	void OnLevelWasLoaded(){
		//alpha = 1; //use this if the alpha is not set to 1 by default.
		BeginFade(-1); //call the fade in function
	}
}

and this is the code for scenechanging

using UnityEngine;
using System.Collections;

public class SceneChanger : MonoBehaviour {

	// Use this for initialization
	IEnumerator OnCollisionEnter(Collision other){	
			//yield return new WaitForSeconds (3.0f);
		float fadeTime=GameObject.Find ("Cube").GetComponent<fading> ().BeginFade (1);
			yield return new WaitForSeconds (fadeTime);
			Application.LoadLevel(1);
		}

}

any help is very much appreciated. Thanks a lot :slight_smile:

Check the spelling for OnGUI and Have a trigger for the creating the fade texture
Try this.