本文为参考大佬的代码,进行自定义修改,更适合自己使用,有待完善,仅供参考交流
====>>>>>>Unity_C# "面向对象"思想,独立操作,拒绝藕合
public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>
{
private static T instance;
public static T Instance
{
//只读单例
get
{
if (instance == null)
{
//创建新Obj 命名和类名一样,并添加对应管理脚本,省去挂载过程
GameObject obj = new GameObject(typeof(T).Name);
instance = obj.AddComponent<T>();
}
return instance;
}
}
protected virtual void Awake()
{
instance = this as T;
}
}
//泛型单例类,通用,此处不是重点
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 class ResourcesTool : Singleton<ResourcesTool>
{
public T ResourcesLoad<T>(object objName) where T : Object
{
string objFilePath = string.Empty;
//根据枚举获取对应资源路径
switch (objName.GetType().Name)
{
case "Audio_BGMusic":
objFilePath = "Audios/BGMusic/" + objName.ToString();
break;
case "Audio_UI":
objFilePath = "Audios/UI/" + objName.ToString();
break;