查看原文
其他

程序丨QSignleton(三):如何通过属性器实现Singleton?

2017-11-13 凉鞋 Gad-腾讯游戏开发者平台

接下来介绍,不通过继承的方式实现单例模式。


系列回顾:

用QSingleton实现一个简单的单例

MonoSingleton单例实现


代码如下:

  • 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插件对泛型支持的不是很好。


结果:



----------------------

今日推荐


10月资料包、资料库下载

使用UGUI绘制多边形雷达图

Unity 渲染教程(十一):透明度

实时渲染的圣经!《RTR3》 全书知识点总览


添加小编微信,可享双重福利

1.加入GAD程序猿交流基地

获取行业干货资讯,观看大牛分享直播

2.领取60G独家程序资料,地址在小编朋友圈

包括腾讯内部分享、文章教程、视频教程等全套资料

↓长按添加小编GAD苏苏↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存