Level Not Loading After Screen Fade

Hello everyone, I’m working on a school project and I can’t get the level to reload after a screen fade. The level will do a fade but the level will not actually restart. Any ideas?

Here is the Screen Fader function:

using UnityEngine;
using System.Collections;

public class ScreenFader : MonoBehaviour {

// Holds the texture to fill the screen
[SerializeField]Texture2D fadeTexture;
[SerializeField]Color colorStart = Color.black;
[SerializeField]Color colorEnd = Color.clear;
// Time to completion of dade
[SerializeField]float fadeTime = 1.0f;
// Internally used to track the passage of time
private float timer = 0.0f;
// Defines the type of function which is used as a 
// delegate when the fade has completed.
public delegate void FadeCompleteEvent();
// The container for the function(s) to be triggered when
// the fade has completed 
private event FadeCompleteEvent OnFadeComplete = null;

// Use this for initialization
void Start () {

// Called when the GUI is drawn
void OnGUI () {
	// Determine the passage of time as a 
	// percentage of the duration time.
	float percent = timer / fadeTime;
	// Use the percentage to determine the 
	// gradient between the two
	GUI.color = Color.Lerp (colorStart, colorEnd, percent);
	// Create a rectangle the size of the screen
	Rect screenRectangle = new Rect(0,0,Screen.width,Screen.height);
	// Draw the texture filling the entire screen
	GUI.DrawTexture(screenRectangle, fadeTexture);

// Loads a prefab and creates an instance from it
static public void CreateFade (string _prefabName, 
                               FadeCompleteEvent _completeEvent) {

	// Load the asset as a basic object
	Object fadePrefab = Resources.Load (_prefabName, typeof(Object));
	// Create a new game object from the loaded prefab
	GameObject fadeObject = Instantiate (fadePrefab) as GameObject;

	// Find the fader's script component and assign the event
	ScreenFader fader = fadeObject.GetComponent<ScreenFader>();
	fader.OnFadeComplete = _completeEvent;
// Update is called once per frame
void Update () {
			// Accumulate the passage of time
			timer += Time.fixedDeltaTime;
			// Duration has been satisfied?
			if (timer > fadeTime) {
					timer = fadeTime;
			if (OnFadeComplete != null) {
					OnFadeComplete = null; 
					Destroy (gameObject, 0.1f);


Here is the script for the button that evokes the load level function when pressed:

using UnityEngine;
using System.Collections;

public class PauseRestart : MenuButtonBase {

// Called on button up
protected override void doButtonAction () {
// Invoked when the fade completes 
void FadeDownCompleted () {
// Use this for initialization
void Start () {


// Update is called once per frame
void Update () {



Instead of a common assignation for an event, I think you should use:

fader.OnFadeComplete += _completeEvent;