0
点赞
收藏
分享

微信扫一扫

Unity框架:JKFrame2.0学习笔记(二)——Singleton单例模式

Singleton

单例模式的基类,不用mono的类可以直接继承

源码

namespace JKFrame
{
    /// <summary>
    /// 单例模式的基类
    /// </summary>
    public abstract class Singleton<T> where T : Singleton<T>, new()
    {
        private static T instance;

        public static T Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new T();
                }
                return instance;
            }
        }
    }

}

如何使用

例如我新建脚本 AnimalController.cs

using JKFrame;
using UnityEngine;

public class AnimalController:Singleton<AnimalController>
{
    public void Bark()
    {
        Debug.Log("狗叫!");
    }
}

调用

AnimalController.Instance.Bark();

SingletonMono

单例模式的基类,用mono的类可以直接继承

源码

using UnityEngine;

namespace JKFrame
{
    public abstract class SingletonMono<T> : MonoBehaviour where T : SingletonMono<T>
    {
        public static T Instance;
        protected virtual void Awake()
        {
            if (Instance == null)
            {
                Instance = this as T;
            }
        }
    }
}

如何使用

例如我新建脚本 AnimalController2.cs,这个脚本是继承了MonoBehaviour的,是可以挂载的

using JKFrame;
using UnityEngine;

public class AnimalController2:SingletonMono<AnimalController2>
{
    public void Bark()
    {
        Debug.Log("狗叫!");
    }
}

调用

AnimalController2.Instance.Bark();

总结

主要就是做了2个单例系统的基类,可以用来继承,看到底是用不用MonoBehaviour。

举报

相关推荐

0 条评论