unityzgy/Assets/Scripts/PublicTool/MonoSingleton.cs
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

62 lines
1.2 KiB
C#

using UnityEngine;
using System.Collections;
namespace DevelopEngine
{
public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>
{
private static T instance = null;
public static T Instance {
get {
if (instance == null)
{
instance = FindObjectOfType(typeof(T)) as T;
if (instance == null)
{
instance = new GameObject("_" + typeof(T).Name).AddComponent<T>();
//DontDestroyOnLoad(instance);
}
if (instance == null)
Debug.LogError("Failed to create instance of " + typeof(T).FullName + ".");
}
return instance;
}
}
void OnApplicationQuit () { if (instance != null) instance = null; }
public static T CreateInstance ()
{
if (Instance != null) Instance.OnCreate();
return Instance;
}
protected virtual void OnCreate ()
{
}
}
public class Singleton<T> where T : new()
{
private static T instance;
public static T Instance
{
get
{
if (instance == null)
{
instance = new T();
}
return instance;
}
}
//Ïú»Ùµ¥ÀýÀà
public static void Destory()
{
if (instance == null) return;
else
instance = default(T);
}
}
}