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>
{
}
相关推荐
qq_205279055 小时前
Unity TileMap 使用经验
unity·游戏引擎
心灵宝贝7 小时前
Mac Unity 2018.dmg游戏工具 安装步骤 简单易懂教程(附安装包)
macos·unity·游戏引擎
TO_ZRG8 小时前
Unity SDK 通过 Registry 分发及第三方依赖处理指南
unity·游戏引擎
龙智DevSecOps解决方案19 小时前
Perforce《2025游戏技术现状报告》Part 1:游戏引擎技术的广泛影响以及生成式AI的成熟之路
人工智能·unity·游戏引擎·游戏开发·perforce
Mr.Winter`21 小时前
基于Proto3和单例模式的系统参数配置模块设计(附C++案例实现)
c++·人工智能·单例模式·机器人
WarPigs2 天前
Unity编辑器开发笔记
unity·编辑器·excel
霜绛2 天前
Unity:lua热更新(三)——Lua语法(续)
unity·游戏引擎·lua
专注于大数据技术栈2 天前
java学习--单例模式之懒汉式
java·学习·单例模式
世洋Blog2 天前
更好的利用ChatGPT进行项目的开发
人工智能·unity·chatgpt
Murphy_lx2 天前
单例模式_
单例模式