欢迎使用CSDN-markdown编辑器
来源:互联网 发布:上外翻译总公司 知乎 编辑:程序博客网 时间:2024/06/15 21:31
单例模式(singleton pattern)大家都不陌生,我今天主要是和大家探讨一下单例模式在unity中的实现,比起一般的单例,unity中有些他的特点。
最普通的单例:(样式一)
public class Singleton
{
static Singleton instance;
public static Singleton Instance { get { if (instance == null) { instance = new Singleton (); } return instance; }}
}
unity单例模式二:
但是unity的所有脚本都必须挂在一个gameobject上,否则无法执行,你这个单例中若只是一些数据,那倒没关系,但我相信绝大多数单例模式都不 会只包含数据,若只要实现包含数据的功能,用全局静态变量就行了,说到这里加一句,有些盆友喜欢用单例脚本当做全局脚本来用,那其实是违背单例模式的初衷 的…
好,我们来实现以下挂到gameobject的单例(模式二):
using UnityEngine;
public class UnitySingleton : MonoBehaviour {
static UnitySingleton instance;
public static UnitySingleton Instance {
get {
if ( instance == null ) {
GameObject obj = new GameObject(“UnitySingleton”);
instance = obj.AddComponent(typeof(UnitySingleton)) as UnitySingleton;
}
return instance;
}
}
}
unity单例模式三:
那如果我的游戏里有很多单例脚本,每个脚本都这么写岂不是很麻烦?岂不是很违背oo思想?^_^,那我们来设计一个泛型类:
using UnityEngine;
public class UnitySingletonG : MonoBehaviour where T : Component {
private static T _instance;
public static T Instance {
get {
if ( _instance == null ) {
GameObject obj = new GameObject(“UnitySingletonG”);
// 隐藏实例化的new game object,下同
//obj.hideFlags = HideFlags.HideAndDontSave;
// 不删除该物体
DontDestroyOnLoad(obj);
_instance = obj.AddComponent(typeof(T)) as T;
}
return _instance;
}
}
}
这样一来,场景中需要单例化的脚本只要简单的继承这个类就可以了
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- [LeetCode] Repeated DNA Sequences
- 做好企业站优化需从5个方面共同考虑
- 关于android开发中接口回调的使用
- HTML基础学习
- C++拾遗--this指针
- 欢迎使用CSDN-markdown编辑器
- xcode5(iOS7)新特性-asset catalog与image slicing
- uboot环境变量实现分析
- [经典面试题][百度]数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。
- 2015.2.8--记录我的机器学习之路--现代启发式算法之蚁群算法
- UVA 1352 Colored Cubes(回溯)
- 字符串的拷贝
- LeetCode | Customers Who Never Order
- codeforces Rockethon 2015