Unity Singleton 单例类
发布日期:2022-02-17 02:40:00 浏览次数:29 分类:技术文章

本文共 1647 字,大约阅读时间需要 5 分钟。

猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢! 

原文地址: 

今天看到群里有朋友问unity单例的最佳实现方式,下面我我经常用的。贴出来供大家参考。

一、添加单例模板类

using UnityEngine;public class Singleton
: 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
(); singleton.name = "(singleton) " + typeof(T).ToString (); DontDestroyOnLoad (singleton); } } return _instance; } } } private static bool applicationIsQuitting = false; public void OnDestroy () { applicationIsQuitting = true; }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

这是一个单例模板类,使用就很简单了。

二、定义自己的单例类

using UnityEngine;using System;public class GameManager : Singleton
{ public float score; void Awake () { this.Init(); } private void Init() { // Init code }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

三、调用使用

GameManager.Instance.score = 99;
  • 1

如果有更好的实现方式,可以推荐下哦。

转载地址:https://blog.csdn.net/qq_39816832/article/details/80225400 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:params(C# 参考)
下一篇:UGUI之动态设置某个节点在其兄弟节点中的位置

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月09日 23时51分47秒