UI框架开发中

This commit is contained in:
2025-09-29 07:45:07 +08:00
parent 423ad80303
commit 71edbb6088
39 changed files with 1191 additions and 397 deletions

View File

@@ -5,7 +5,7 @@ using UnityEngine;
using UniFramework.Event;
using YooAsset;
public class Boot : Singleton<Boot>
public class Boot : SingletonMono<Boot>
{
public GameObject MainUICanvas;
public Camera UICamera;

View File

@@ -1,24 +1,23 @@
using UnityEngine;
public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
public class Singleton<T> where T:class,new()
{
private static T _instance;
static T _inst;
static readonly object _lock = new object();
public static T Inst
{
get
{
if (_instance == null)
lock (_lock)
{
_instance = FindAnyObjectByType<T>();
if (_instance == null)
if(_inst == null)
{
GameObject singletonObject = new GameObject(typeof(T).Name);
_instance = singletonObject.AddComponent<T>();
_inst = new T();
Debug.Log($"[Singleton] 创建 {typeof(T).Name} 实例");
}
return _inst;
}
return _instance;
}
}
}
}

View File

@@ -0,0 +1,29 @@
using UnityEngine;
public class SingletonMono<T> : MonoBehaviour where T : MonoBehaviour
{
private static T _instance;
private static readonly object _lock = new object();
public static T Inst
{
get
{
lock (_lock)
{
if (_instance == null)
{
_instance = FindAnyObjectByType<T>();
if (_instance == null)
{
GameObject singletonObject = new GameObject(typeof(T).Name);
DontDestroyOnLoad(singletonObject);
_instance = singletonObject.AddComponent<T>();
Debug.Log($"实例化{singletonObject.name}");
}
}
return _instance;
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 50a00830f8355f345af250090bebff8e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: