一、添加单例模板类

 

using UnityEngine;

public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
{
    private static T _instance;

    private static object _lock = new object ();

    public static T Instance 
    {
        get {
            if (applicationIsQuitting) {
                return null;
            }

            lock (_lock) {
                if (_instance == null) {
                    _instance = (T)FindObjectOfType (typeof(T));

                    if (FindObjectsOfType (typeof(T)).Length > 1) {
                        return _instance;
                    }

                    if (_instance == null) {
                        GameObject singleton = new GameObject ();
                        _instance = singleton.AddComponent<T> ();
                        singleton.name = "(singleton) " + typeof(T).ToString ();

                        DontDestroyOnLoad (singleton);
                    }
                }

                return _instance;
            }
        }
    }

    private static bool applicationIsQuitting = false;

    public void OnDestroy ()
    {
        applicationIsQuitting = true;
    }
}

 

二、定义自己的单例类

using UnityEngine;
using System;

public class GameManager : Singleton<GameManager> {
    public float score;
    void Awake () {
        this.Init();
    }

    private void Init() {
        // Init code
    }
}

 

三、调用使用

GameManager.Instance.score = 99;

 

原文地址: http://blog.csdn.net/cocos2der/article/details/47335197