接下来笔者来介绍如何用QSingleton实现一个简单的单例。
代码如下。
- Singleton.cs
namespace QFramework.Example
{
using UnityEngine;
class Class2Singleton :QSingleton<Class2Singleton>
{
private static int mIndex = 0;
private Class2Singleton() {}
public override void OnSingletonInit()
{
mIndex++;
}
public void Log(string content)
{
Debug.Log("Class2Singleton" + mIndex + ":" + content);
}
}
public class Singleton : MonoBehaviour
{
private void Start()
{
Class2Singleton.Instance.Log("Hello World!");
// delete instance
Class2Singleton.Instance.Dispose();
// a differente instance
Class2Singleton.Instance.Log("Hello World!");
}
}
}
只需简单继承QSingleton,并声明非public构造方法即可。如果有需要获取单例初始化的时机,则可以选择重载OnSingletonInit方法。
结果:
Hello World!
Hello World!
注意:
- 建议在OnSingletonInit方法中进行单例的初始化操作而不是在构造函数中。
- QSingleton.cs只适合实现没有继承其他父类的单例。
相关链接:
更多内容
-
QFramework 地址:https://github.com/liangxiegame/QFramework
-
QQ 交流群:623597263
-
Unity 进阶小班:
- 主要训练内容:
- 框架搭建训练(第一年)
- 跟着案例学 Shader(第一年)
- 副业的孵化(第二年、第三年)
- 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
- 主要训练内容:
-
关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。