概述
单例推导过程:
关键字static:将需要全局调用的对象在内存中共享出来
思路:
1.其实需要被共享的一般是属性和方法,
2.其实最终编译出的文件只有一个所以这些属性和方法放到哪里都无所谓,所以可以放到一个文件里统一管理,
3.只要给他合适的机会赋值就ok。
4.unity中赋值可以在start和awake中将值赋值给共享对象即可,也可以通过FindObjectOfType 查找。
游戏开发中的单例介绍:
- 游戏单例:以Unity示例,需要继承MonoBehaviour的需要对引擎做出一些特殊处理的单例生成方式
public abstract class GameInst<T> : MonoBehaviour where T : MonoBehaviour, new() { static T _inst; public static T Inst { get { if (_inst == null) { //错误示范 //_inst = new T(); //正确示范: //_inst= new GameObject().AddComponent<T>();//DonDestroyOnLoad(); //小游戏简写 查找已经存在场景中的类,如果查找不到为null _inst = FindObjectOfType(typeof(T)) as T; } return _inst; } } public static T GetInst() { if (_inst == null) { _inst = FindObjectOfType(typeof(T)) as T; } return _inst; } }
-
数据单例:不需要额外操作,按语言规范新建即可。
public abstract class DataInst<T> where T : new() { static T _inst; public static T Inst { get { if (_inst == null) { _inst = new T(); } return _inst; } } public static T inst { get { if (_inst == null) { _inst = new T(); } return _inst; } } public static T GetInst() { if (_inst == null) { _inst = new T(); } return _inst; } }
最后
以上就是谦让方盒为你收集整理的游戏代码规范实例之单例的全部内容,希望文章能够帮你解决游戏代码规范实例之单例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复