Unity框架:JKFrame2.0学习笔记(二)——Singleton单例模式
  v5bEezpf7PPs 2023年11月02日 57 0

Singleton

目录位置

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

单例模式的基类,不用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。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs