Unity 单例模式写法

普通类的写法

cs 复制代码
public class LanguageManager : MonoBehaviour
{
    private static LanguageManager _instance;
    
    public static LanguageManager Instance() {
        if (_instance == null) {
            _instance = FindObjectOfType<LanguageManager>();
            if (_instance == null) {
                GameObject go = new GameObject(typeof(LanguageManager).Name);
                 _instance= go.AddComponent<LanguageManager>();
            }
        }
        return _instance;
    }
      
}

扩展成一个单例的工具类

cs 复制代码
using UnityEngine;


/// <summary>
/// MonoBehaviour单例
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class SingletonMonoBehaviour<T> : MonoBehaviour where T : SingletonMonoBehaviour<T>
{
    private static T m_Instance;
    public static T Instance
    {
        get
        {
            if (m_Instance == null)
            {
                //查找场景是否增加了该类
                m_Instance = FindObjectOfType<T>();
                if (m_Instance == null)
                {
                    GameObject singletonObject = new GameObject { name = typeof(T).Name };
                    m_Instance = singletonObject.AddComponent<T>();
                    DontDestroyOnLoad(singletonObject);
                }
            }

            return m_Instance;
        }
    }

    public static T getInstance()
    {
        return m_Instance;
    }

    protected virtual void OnDestroy()
    {
        m_Instance = null;
    }

}

使用该类的就是

cs 复制代码
public class LogToFile : SingletonMonoBehaviour<LogToFile>
{
}
相关推荐
mxwin7 小时前
Unity Shader FLOWMAP岩浆流动制作案例
unity·游戏引擎·shader·uv
小贺儿开发7 小时前
【Arduino与Unity交互探究】01 摇杆模块
科技·unity·游戏引擎·arduino·串口通信·摇杆·硬件交互
Yasin Chen9 小时前
Unity TMP_SDF 分析(三)顶点着色器1
unity·游戏引擎·着色器
mxwin10 小时前
Unity Shader 使用 Noise 图 制作Shader 溶解效果
unity·游戏引擎
mxwin12 小时前
Unity Shader 用 Ramp 贴图实现薄膜干涉效果
unity·游戏引擎·贴图·shader·uv
bbq粉刷匠12 小时前
Java--多线程--单例模式
java·开发语言·单例模式
魔士于安13 小时前
Unity星球资源,八大星球,带fps显示
游戏·unity·游戏引擎·贴图·模型
张老师带你学14 小时前
unity资源,深空陨石,适合太空背景的游戏开发
游戏·unity·模型
鹿野素材屋16 小时前
Unity动画幅度太大怎么办
unity·游戏引擎
垂葛酒肝汤17 小时前
Unity Sprite Rect 越界问题笔记
笔记·unity·游戏引擎