jeudi 23 juin 2016

Script instance is returning null

object reference not sent to an instance of an object My code is SceneFader.instance.LoadLevel("Gameplay"); I am using it for my new 2d android game in unity.

my complete code for MainMenuController.cs is '

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class MainMenuController : MonoBehaviour {

    [SerializeField]
    private Button musicBtn;

    [SerializeField]
    private Sprite[] musicIcons;

    // Use this for initialization
    void Start () {
        CheckToPlayTheMusic ();
    }

    void CheckToPlayTheMusic(){
        if (GamePreferences.GetMusicState () == 1) {
            MusicController.instance.PlayMusic (true);
            musicBtn.image.sprite = musicIcons [1]; 
        } else {
            MusicController.instance.PlayMusic (false);
            musicBtn.image.sprite = musicIcons [0];
        }

    }

    public void StartGame(){
        GameManager.instance.gameStartedFromMainMenu = true;
        //Application.LoadLevel ("Gameplay");
        SceneFader.instance.LoadLevel("Gameplay");
    }

    public void HighscoreMenu(){
        Application.LoadLevel ("HighScoreScene");


    }

    public void OptionsMenu(){
        Application.LoadLevel ("OptionsMenu");
    }


    public void QuitGame(){
        Application.Quit ();

    }


    public void MusicButton(){
        if (GamePreferences.GetMusicState () == 0) {
            GamePreferences.SetMusicState (1);
            MusicController.instance.PlayMusic (true);
            musicBtn.image.sprite = musicIcons [1];
        } else if (GamePreferences.GetMusicState () == 1) {
            GamePreferences.SetMusicState (0);
            MusicController.instance.PlayMusic (false);
            musicBtn.image.sprite = musicIcons [0];
        }

    }

}

Any body have same kind of issue?

please check scenefader script

using UnityEngine; using System.Collections;

public class SceneFader : MonoBehaviour {

public static SceneFader instance;

[SerializeField]

private GameObject fadePanel;

[SerializeField]
private Animator fadeAnim;

// Use this for initialization
void Awake () {
    MakeSingleton ();
}

void MakeSingleton(){
    if (instance != null) {
        Destroy (gameObject);
    } else {
        instance = this;
        DontDestroyOnLoad (gameObject);

    }

}

public void LoadLevel(string level){
    StartCoroutine (FadeInOut (level));
}

IEnumerator FadeInOut (string level){
    fadePanel.SetActive (true);
    fadeAnim.Play ("FadeIn");

    yield return StartCoroutine (MyCoroutine.WaitForRealSeconds (1f));

    Application.LoadLevel (level);
    fadeAnim.Play ("FadeOut");

    yield return StartCoroutine (MyCoroutine.WaitForRealSeconds (.7f));

    fadePanel.SetActive (false);

}

}

Aucun commentaire:

Enregistrer un commentaire