接下来介绍,不通过继承的方式实现单例模式。大家都出去嗨了,而我却在家码代码... 代码如下:
-
MonoSingletonProperty.cs
namespace QFramework.Example { using UnityEngine; class Class2SignetonProperty : ISingleton { public static Class2SignetonProperty Instance { get { return QSingletonProperty<Class2SignetonProperty>.Instance; } } private Class2SignetonProperty() {} private static int mIndex = 0; public void OnSingletonInit() { mIndex++; } public void Dispose() { QSingletonProperty<Class2SignetonProperty>.Dispose(); } public void Log(string content) { Debug.Log("Class2SingletonProperty" + mIndex + ":" + content); } } public class SingletonProperty : MonoBehaviour { // Use this for initialization void Start () { Class2SignetonProperty.Instance.Log("Hello World!"); // delete current instance Class2SignetonProperty.Instance.Dispose(); // new instance Class2SignetonProperty.Instance.Log("Hello World!"); } } }
```
- 必须要实现 OnSingletonInit()、和 Dispose() 方法。
- 使用这种方式的好处有很多,导出给 Lua 的时候只需简单封装一个 Wrapper 就可以用了,而不用每个父类都进行导出 Lua。而且有的 Lua 插件对泛型支持的不是很好。
结果:
转载请注明地址:凉鞋的笔记:liangxiegame.com
更多内容
-
QFramework 地址:https://github.com/liangxiegame/QFramework
-
QQ 交流群:623597263
-
Unity 进阶小班:
- 主要训练内容:
- 框架搭建训练(第一年)
- 跟着案例学 Shader(第一年)
- 副业的孵化(第二年、第三年)
- 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
- 主要训练内容:
-
关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。