Unity Singleton 單例類(Unity3D開發之二十),singletonunity3d
猴子原創,歡迎轉載。轉載請註明: 轉載自Cocos2Der-CSDN,謝謝!
原文地址: http://blog.csdn.net/cocos2der/article/details/47335197
今天看到群裡有朋友問unity單例的最佳實現方式,下面我我經常用的。貼出來供大家參考。
一、添加單例模板類
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;
如果有更好的實現方式,可以推薦下哦。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。