zoukankan      html  css  js  c++  java
  • Unity C#单例模式的实现

    一、添加单例模板类

    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

  • 相关阅读:
    新式类、经典类与多继承
    实现抽象类之方式二
    实现抽象类之方式一
    re模块
    28个高频Linux命令
    Git使用教程
    编程语言介绍
    编码
    进制
    操作系统简史
  • 原文地址:https://www.cnblogs.com/UnrealEra/p/5896592.html
Copyright © 2011-2022 走看看