接下来笔者来介绍如何用QSingleton实现一个简单的单例。
代码如下。
* Singleton.cs
```c#
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)
## 更多内容
* QFramework 地址:[https://github.com/liangxiegame/QFramework](https://github.com/liangxiegame/QFramework)
* QQ 交流群:[623597263](http://shang.qq.com/wpa/qunwpa?idkey=706b8eef0fff3fe4be9ce27c8702ad7d8cc1bceabe3b7c0430ec9559b3a9ce66)
* **Unity 进阶小班**:
* 主要训练内容:
* 框架搭建训练(第一年)
* 跟着案例学 Shader(第一年)
* 副业的孵化(第二年、第三年)
* 权益、授课形式等具体详情请查看[《小班产品手册》](https://liangxiegame.com/master/intro):https://liangxiegame.com/master/intro
* 关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。
![](http://file.liangxiegame.com/38eccb55-40b2-4845-93d6-f5fb50ff9492.png)
- 正文
- Unity 游戏框架搭建 2017(一)概述
- Unity 游戏框架搭建 2017(二)单例的模板
- Unity 游戏框架搭建 2017(三)MonoBehaviour 单例的模板
- Unity 游戏框架搭建 2017(四)简易有限状态机
- Unity 游戏框架搭建 2017(五)简易消息机制
- Unity 游戏框架搭建 2017 (六) 关于框架的一些好文和一些思考
- Unity 游戏框架搭建 2017 (七) 减少加班利器-QApp类
- Unity 游戏框架搭建 2017 (八) 减少加班利器-QLog
- Unity 游戏框架搭建 2017 (九) 减少加班利器-QConsole
- Unity 游戏框架搭建 2017 (十) QFramework v0.0.2小结
- Unity 游戏框架搭建 2017 (十一) 简易 AssetBundle 打包工具 (一)
- Unity 游戏框架搭建 2017 (十二) 简易 AssetBundle 打包工具 (二)
- Unity 游戏框架搭建 2017 (十三) 无需继承的单例的模板
- Unity 游戏框架搭建 2017 (十四) 优雅的 QSingleton (零) QuickStart
- Unity 游戏框架搭建 2017 (十四) 优雅的 QSingleton (一) Singleton 单例实现
- Unity 游戏框架搭建 2017 (十四) 优雅的 QSingleton (二) MonoSingleton单例实现
- Unity 游戏框架搭建 2017 (十四) 优雅的 QSignleton (三) 通过属性器实现 Singleton
- Unity 游戏框架搭建 2017 (十四) 优雅的 QSingleton (四) 属性器实现 Mono 单例
- Unity 游戏框架搭建 2017 (十四) 优雅的 QSingleton (五) 优雅地进行GameObject命名
- Unity 游戏框架搭建 2017 (十五) 优雅的 QChain (零)
- Unity 游戏框架搭建 2017 (十六) v0.0.3 架构调整
- Unity 游戏框架搭建 2017 (十七) 静态扩展GameObject 实现链式编程
- Unity 游戏框架搭建 2017 (十八) 静态扩展 + 泛型实现 transform 的链式编程
- Unity 游戏框架搭建 2017 (十九) 简易对象池
- Unity 游戏框架搭建 2017 (二十) 安全的对象池
- Unity 游戏框架搭建 2017 (二十一) 使用对象池时的一些细节
- Unity 游戏框架搭建 2017 (二十二) 简易引用计数器
- Unity 游戏框架搭建 2017 (二十三) 重构小工具 Platform
- Unity 游戏框架搭建 2017 (二十四) 小结