猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,,谢谢! 原文地址:
今天看到群里有朋友问unity单例的最佳实现方式,下面我我经常用的。贴出来供大家参考。
一、添加单例模板类using UnityEngine;public class Singleton<T> : MonoBehaviour where T : MonoBehaviour{private static T _instance;_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;}}}applicationIsQuitting = false;(){applicationIsQuitting = true;}}
这是一个单例模板类,使用就很简单了。
二、定义自己的单例类using UnityEngine;using System;public class GameManager : Singleton<GameManager> {public float score;void Awake () {this.Init();}() {// Init code}}三、调用使用GameManager
如果有更好的实现方式,可以推荐下哦。
没有什么可凭仗,只有他的好身体,没有地方可去,