Unity 游戏框架搭建 2017 (十四) 优雅的 QSignleton (三) 通过属性器实现 Singleton

接下来介绍,不通过继承的方式实现单例模式。大家都出去嗨了,而我却在家码代码... 代码如下:

  • MonoSingletonProperty.cs

    namespace QFramework.Example
    {
      using UnityEngine;
    
      class Class2SignetonProperty : ISingleton
      {
          public static Class2SignetonProperty Instance
          {
              get { return QSingletonProperty.Instance; }
          }
    
          private Class2SignetonProperty() {}
    
          private static int mIndex = 0;
    
          public void OnSingletonInit()
          {
              mIndex++;
          }
    
          public void Dispose()
          {
              QSingletonProperty.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 插件对泛型支持的不是很好。

结果:

 

Unity 游戏框架搭建 2017 (十四) 优雅的 QSignleton (三) 通过属性器实现 Singleton_第1张图片


转载请注明地址:凉鞋的笔记:liangxiegame.com

 

更多内容

  • QFramework 地址:https://github.com/liangxiegame/QFramework

  • QQ 交流群:623597263

  • Unity 进阶小班

    • 主要训练内容:
      • 框架搭建训练(第一年)
      • 跟着案例学 Shader(第一年)
      • 副业的孵化(第二年、第三年)
    • 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
  • 关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

你可能感兴趣的:(独立日记,Unity游戏框架搭,Unity,unity,u3d,c#,游戏,架构)