码迷,mamicode.com
首页 > 其他好文 > 详细

【Unity】游戏中的单例

时间:2014-09-26 21:11:58      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   os   ar   strong   

游戏中需要一些 GameObject(例如网络管理器) 在游戏的整个生命周期都存在,而且是以单例的形式存在。

 XGame 中实现这种单例的方式是,单例脚本都从 MonoSingle 类继承,MonoSingleton 的实现方法是在 Awake() 中调用DontDestroyOnLoad(gameObject);来保证单例。
MonoSingleton类的实现代码:
 1 /// <summary>
 2 /// Generic Mono singleton.
 3 /// </summary>
 4 using UnityEngine;
 5 
 6 public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>{
 7     
 8     private static T mInstance = null;
 9     
10     public static T Instance{
11         get{
12             return mInstance;
13         }
14     }
15 
16     private void Awake(){
17    
18         if (mInstance == null)
19         {
20             DontDestroyOnLoad(gameObject);
21             mInstance = this as T;
22             mInstance.Init();
23         }
24         else
25         {
26             Destroy(gameObject);
27         }
28     }
29  
30     public virtual void Init(){}
31 
32     public virtual void Fini(){}
33  
34 
35     private void OnApplicationQuit(){
36         mInstance.Fini();
37         mInstance = null;
38     }
39 }

需要单例控制的脚本,只要从 MonoSigleton 类继承就可以了,重写 Init 方法来实现单例自己的初始化,重写 Fini 实现自己的清理工作。例如:

bubuko.com,布布扣

【Unity】游戏中的单例

标签:des   style   blog   http   color   io   os   ar   strong   

原文地址:http://www.cnblogs.com/litterrondo/p/3995328.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!