初始化
This commit is contained in:
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle.meta
vendored
Normal file
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle.meta
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5e06e19e9eea4bcdb1ed619b26777441
|
||||
timeCreated: 1688352260
|
||||
62
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle/LoadHandle.cs
vendored
Normal file
62
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle/LoadHandle.cs
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
internal class LoadHandle : IRefPool
|
||||
{
|
||||
internal string PkgName { get; private set; }
|
||||
internal string ResName { get; private set; }
|
||||
internal int Handle { get; private set; }
|
||||
internal int RefCount { get; private set; }
|
||||
internal Object Object { get; private set; }
|
||||
|
||||
internal void SetGroupHandle(string pkgName, string resName)
|
||||
{
|
||||
PkgName = pkgName;
|
||||
ResName = resName;
|
||||
}
|
||||
|
||||
public void Recycle()
|
||||
{
|
||||
PkgName = string.Empty;
|
||||
ResName = string.Empty;
|
||||
Handle = 0;
|
||||
RefCount = 0;
|
||||
Object = null;
|
||||
}
|
||||
|
||||
internal void ResetHandle(Object obj, int handle)
|
||||
{
|
||||
Object = obj;
|
||||
Handle = handle;
|
||||
}
|
||||
|
||||
internal void AddRefCount()
|
||||
{
|
||||
RefCount++;
|
||||
}
|
||||
|
||||
internal void RemoveRefCount()
|
||||
{
|
||||
RefCount--;
|
||||
if (RefCount <= 0)
|
||||
{
|
||||
Release();
|
||||
}
|
||||
}
|
||||
|
||||
private void Release()
|
||||
{
|
||||
if (Handle != 0)
|
||||
YIUILoadDI.ReleaseAction?.Invoke(Handle);
|
||||
LoadHelper.PutLoad(PkgName, ResName);
|
||||
}
|
||||
|
||||
internal bool WaitAsync { get; private set; }
|
||||
|
||||
internal void SetWaitAsync(bool value)
|
||||
{
|
||||
WaitAsync = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 023914783fab4f48953b0b61c8dd9457
|
||||
timeCreated: 1688365598
|
||||
76
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle/LoadHelper.cs
vendored
Normal file
76
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle/LoadHelper.cs
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
internal static partial class LoadHelper
|
||||
{
|
||||
private static string s_NullPkgName = "Default";
|
||||
|
||||
private static Dictionary<string, Dictionary<string, LoadHandle>> m_AllLoadDic =
|
||||
new Dictionary<string, Dictionary<string, LoadHandle>>();
|
||||
|
||||
internal static LoadHandle GetLoad(string pkgName, string resName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(pkgName))
|
||||
{
|
||||
pkgName = s_NullPkgName;
|
||||
}
|
||||
|
||||
if (!m_AllLoadDic.ContainsKey(pkgName))
|
||||
{
|
||||
m_AllLoadDic.Add(pkgName, new Dictionary<string, LoadHandle>());
|
||||
}
|
||||
|
||||
var pkgDic = m_AllLoadDic[pkgName];
|
||||
|
||||
if (!pkgDic.ContainsKey(resName))
|
||||
{
|
||||
var group = RefPool.Get<LoadHandle>();
|
||||
group.SetGroupHandle(pkgName, resName);
|
||||
pkgDic.Add(resName, group);
|
||||
}
|
||||
|
||||
return pkgDic[resName];
|
||||
}
|
||||
|
||||
internal static bool PutLoad(string pkgName, string resName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(pkgName))
|
||||
{
|
||||
pkgName = s_NullPkgName;
|
||||
}
|
||||
|
||||
if (!m_AllLoadDic.ContainsKey(pkgName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var pkgDic = m_AllLoadDic[pkgName];
|
||||
|
||||
if (!pkgDic.ContainsKey(resName))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var load = pkgDic[resName];
|
||||
pkgDic.Remove(resName);
|
||||
RemoveLoadHandle(load);
|
||||
RefPool.Put(load);
|
||||
return true;
|
||||
}
|
||||
|
||||
internal static void PutAll()
|
||||
{
|
||||
foreach (var pkgDic in m_AllLoadDic.Values)
|
||||
{
|
||||
foreach (var load in pkgDic.Values)
|
||||
{
|
||||
RefPool.Put(load);
|
||||
}
|
||||
}
|
||||
|
||||
m_AllLoadDic.Clear();
|
||||
m_ObjLoadHandle.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7351aab0776482f9b21092caefbaa09
|
||||
timeCreated: 1688366062
|
||||
59
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle/LoadHelper_obj.cs
vendored
Normal file
59
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/LoadHandle/LoadHelper_obj.cs
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
internal static partial class LoadHelper
|
||||
{
|
||||
private static Dictionary<Object, LoadHandle> m_ObjLoadHandle = new Dictionary<Object, LoadHandle>();
|
||||
|
||||
internal static bool AddLoadHandle(Object obj, LoadHandle handle)
|
||||
{
|
||||
if (m_ObjLoadHandle.ContainsKey(obj))
|
||||
{
|
||||
if (m_ObjLoadHandle[obj] != handle)
|
||||
{
|
||||
Debug.LogError($"此obj {obj.name} Handle 已存在 且前后不一致 请检查 请勿创建多个");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
m_ObjLoadHandle.Add(obj, handle);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool RemoveLoadHandle(LoadHandle handle)
|
||||
{
|
||||
var obj = handle.Object;
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return RemoveLoadHandle(obj);
|
||||
}
|
||||
|
||||
private static bool RemoveLoadHandle(Object obj)
|
||||
{
|
||||
if (!m_ObjLoadHandle.ContainsKey(obj))
|
||||
{
|
||||
Debug.LogError($"此obj {obj.name} Handle 不存在 请检查 请先创建设置");
|
||||
return false;
|
||||
}
|
||||
|
||||
return m_ObjLoadHandle.Remove(obj);
|
||||
}
|
||||
|
||||
internal static LoadHandle GetLoadHandle(Object obj)
|
||||
{
|
||||
if (!m_ObjLoadHandle.ContainsKey(obj))
|
||||
{
|
||||
Debug.LogError($"此obj {obj.name} Handle 不存在 请检查 请先创建设置");
|
||||
return null;
|
||||
}
|
||||
|
||||
return m_ObjLoadHandle[obj];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c93e02ca9d19437483150cabad564dde
|
||||
timeCreated: 1688366653
|
||||
37
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadDI.cs
vendored
Normal file
37
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadDI.cs
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
//------------------------------------------------------------
|
||||
// Author: 亦亦
|
||||
// Mail: 379338943@qq.com
|
||||
// Data: 2023年2月12日
|
||||
//------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using Object = UnityEngine.Object;
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// 注入加载方法
|
||||
/// </summary>
|
||||
public static partial class YIUILoadDI
|
||||
{
|
||||
//同步加载方法
|
||||
//参数1: pkgName 包名
|
||||
//参数2: resName 资源名
|
||||
//参数3: Type 需要加载的资源类型
|
||||
//返回值: obj对象
|
||||
public static Func<string, string, Type, (Object, int)> LoadAssetFunc { internal get; set; }
|
||||
|
||||
//异步加载方法
|
||||
public static Func<string, string, Type, UniTask<(Object, int)>> LoadAssetAsyncFunc { internal get; set; }
|
||||
|
||||
//验证是否有效
|
||||
public static Func<string, string, bool> VerifyAssetValidityFunc { internal get; set; }
|
||||
|
||||
//释放方法
|
||||
public static Action<int> ReleaseAction { internal get; set; }
|
||||
|
||||
//释放所有方法
|
||||
public static Action ReleaseAllAction { internal get; set; }
|
||||
}
|
||||
}
|
||||
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadDI.cs.meta
vendored
Normal file
3
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadDI.cs.meta
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f11f87dad2c49c2a72aef2b06481155
|
||||
timeCreated: 1685416129
|
||||
89
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Async.cs
vendored
Normal file
89
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Async.cs
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Object = UnityEngine.Object;
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// 异步加载
|
||||
/// </summary>
|
||||
internal static partial class YIUILoadHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 异步加载资源对象
|
||||
/// 返回类型
|
||||
/// </summary>
|
||||
internal static async UniTask<T> LoadAssetAsync<T>(string pkgName, string resName) where T : Object
|
||||
{
|
||||
var load = LoadHelper.GetLoad(pkgName, resName);
|
||||
load.AddRefCount();
|
||||
var loadObj = load.Object;
|
||||
if (loadObj != null)
|
||||
{
|
||||
return (T)loadObj;
|
||||
}
|
||||
|
||||
if (load.WaitAsync)
|
||||
{
|
||||
await UniTask.WaitUntil(() => !load.WaitAsync);
|
||||
|
||||
loadObj = load.Object;
|
||||
|
||||
if (loadObj != null)
|
||||
{
|
||||
return (T)loadObj;
|
||||
}
|
||||
else
|
||||
{
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
load.SetWaitAsync(true);
|
||||
|
||||
var (obj, hashCode) = await YIUILoadDI.LoadAssetAsyncFunc(pkgName, resName, typeof(T));
|
||||
|
||||
if (obj == null)
|
||||
{
|
||||
load.SetWaitAsync(false);
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!LoadHelper.AddLoadHandle(obj, load))
|
||||
{
|
||||
load.SetWaitAsync(false);
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
load.ResetHandle(obj, hashCode);
|
||||
load.SetWaitAsync(false);
|
||||
return (T)obj;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步加载资源对象
|
||||
/// 回调类型
|
||||
/// </summary>
|
||||
internal static void LoadAssetAsync<T>(string pkgName, string resName, Action<T> action) where T : Object
|
||||
{
|
||||
LoadAssetAsyncAction(pkgName, resName, action).Forget();
|
||||
}
|
||||
|
||||
private static async UniTaskVoid LoadAssetAsyncAction<T>(string pkgName, string resName, Action<T> action)
|
||||
where T : Object
|
||||
{
|
||||
var asset = await LoadAssetAsync<T>(pkgName, resName);
|
||||
if (asset == null)
|
||||
{
|
||||
Debug.LogError($"异步加载对象失败 {pkgName} {resName}");
|
||||
return;
|
||||
}
|
||||
|
||||
action?.Invoke(asset);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10621e74f24042d08ea98205804ce508
|
||||
timeCreated: 1688368867
|
||||
67
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_GameObject.cs
vendored
Normal file
67
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_GameObject.cs
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Object = UnityEngine.Object;
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// UI用 加载器
|
||||
/// 扩展 GameObject快捷方法 需成对使用
|
||||
/// </summary>
|
||||
internal static partial class YIUILoadHelper
|
||||
{
|
||||
private static Dictionary<Object, Object> g_ObjectMap = new Dictionary<Object, Object>();
|
||||
|
||||
/// <summary>
|
||||
/// 同步加载 并实例化
|
||||
/// </summary>
|
||||
internal static GameObject LoadAssetInstantiate(string pkgName, string resName)
|
||||
{
|
||||
var asset = LoadAsset<GameObject>(pkgName, resName);
|
||||
if (asset == null) return null;
|
||||
var obj = Object.Instantiate(asset);
|
||||
g_ObjectMap.Add(obj, asset);
|
||||
return obj;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步加载 并实例化
|
||||
/// </summary>
|
||||
internal static async UniTask<GameObject> LoadAssetAsyncInstantiate(string pkgName, string resName)
|
||||
{
|
||||
var asset = await LoadAssetAsync<GameObject>(pkgName, resName);
|
||||
if (asset == null) return null;
|
||||
var obj = Object.Instantiate(asset);
|
||||
g_ObjectMap.Add(obj, asset);
|
||||
return obj;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 异步加载资源对象
|
||||
/// 回调类型
|
||||
/// </summary>
|
||||
internal static async UniTask LoadAssetAsyncInstantiate(string pkgName, string resName, Action<Object> action)
|
||||
{
|
||||
var obj = await LoadAssetAsyncInstantiate(pkgName, resName);
|
||||
if (obj == null)
|
||||
{
|
||||
Debug.LogError($"异步加载对象失败 {pkgName} {resName}");
|
||||
return;
|
||||
}
|
||||
|
||||
action?.Invoke(obj);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 释放由 实例化出来的GameObject
|
||||
/// </summary>
|
||||
internal static void ReleaseInstantiate(Object gameObject)
|
||||
{
|
||||
if (!g_ObjectMap.TryGetValue(gameObject, out var asset)) return;
|
||||
g_ObjectMap.Remove(gameObject);
|
||||
Release(asset);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c1b3406ecdac4b3395ea58aee383e380
|
||||
timeCreated: 1685414160
|
||||
37
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Other.cs
vendored
Normal file
37
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Other.cs
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// 同步加载
|
||||
/// </summary>
|
||||
internal static partial class YIUILoadHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// 资源验证
|
||||
/// </summary>
|
||||
internal static bool VerifyAssetValidity(string pkgName, string resName)
|
||||
{
|
||||
return YIUILoadDI.VerifyAssetValidityFunc(pkgName, resName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 释放某个资源对象
|
||||
/// 不包含实例化的对象
|
||||
/// 实例化的对象请调用另外一个实例化释放 ReleaseInstantiate
|
||||
/// </summary>
|
||||
internal static void Release(Object obj)
|
||||
{
|
||||
LoadHelper.GetLoadHandle(obj)?.RemoveRefCount();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 一键释放所有 慎用
|
||||
/// </summary>
|
||||
internal static void ReleaseAll()
|
||||
{
|
||||
LoadHelper.PutAll();
|
||||
YIUILoadDI.ReleaseAllAction?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b6772417bd264a16860a525602b9bb73
|
||||
timeCreated: 1688368258
|
||||
44
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Sync.cs
vendored
Normal file
44
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Sync.cs
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// 同步加载
|
||||
/// </summary>
|
||||
internal static partial class YIUILoadHelper
|
||||
{
|
||||
/*
|
||||
* 这些方法都是给框架内部使用的 内部自行管理
|
||||
* 禁止 internal 改 public
|
||||
* 外部有什么加载 应该走自己框架中的加载方式 自行管理
|
||||
* 比如你想自己new一个obj 既然不是用UI框架内部提供的方法 那就应该你自行实现不要调用这个类
|
||||
*/
|
||||
|
||||
internal static T LoadAsset<T>(string pkgName, string resName) where T : Object
|
||||
{
|
||||
var load = LoadHelper.GetLoad(pkgName, resName);
|
||||
load.AddRefCount();
|
||||
var loadObj = load.Object;
|
||||
if (loadObj != null)
|
||||
{
|
||||
return (T)loadObj;
|
||||
}
|
||||
|
||||
var (obj, hashCode) = YIUILoadDI.LoadAssetFunc(pkgName, resName, typeof(T));
|
||||
if (obj == null)
|
||||
{
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!LoadHelper.AddLoadHandle(obj, load))
|
||||
{
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
load.ResetHandle(obj, hashCode);
|
||||
return (T)obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 83796d1e96f24cea8587e71a8d5df1af
|
||||
timeCreated: 1688365434
|
||||
110
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Type.cs
vendored
Normal file
110
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_Type.cs
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using Object = UnityEngine.Object;
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// 不使用泛型 使用type加载的方式
|
||||
/// </summary>
|
||||
internal static partial class YIUILoadHelper
|
||||
{
|
||||
internal static Object LoadAsset(string pkgName, string resName, Type assetType)
|
||||
{
|
||||
var load = LoadHelper.GetLoad(pkgName, resName);
|
||||
load.AddRefCount();
|
||||
var loadObj = load.Object;
|
||||
if (loadObj != null)
|
||||
{
|
||||
return loadObj;
|
||||
}
|
||||
|
||||
var (obj, hashCode) = YIUILoadDI.LoadAssetFunc(pkgName, resName, assetType);
|
||||
if (obj == null)
|
||||
{
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!LoadHelper.AddLoadHandle(obj, load))
|
||||
{
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
load.ResetHandle(obj, hashCode);
|
||||
return obj;
|
||||
}
|
||||
|
||||
internal static async UniTask<Object> LoadAssetAsync(string pkgName, string resName, Type assetType)
|
||||
{
|
||||
var load = LoadHelper.GetLoad(pkgName, resName);
|
||||
load.AddRefCount();
|
||||
var loadObj = load.Object;
|
||||
if (loadObj != null)
|
||||
{
|
||||
return loadObj;
|
||||
}
|
||||
|
||||
if (load.WaitAsync)
|
||||
{
|
||||
await UniTask.WaitUntil(() => !load.WaitAsync);
|
||||
|
||||
loadObj = load.Object;
|
||||
if (loadObj != null)
|
||||
{
|
||||
return loadObj;
|
||||
}
|
||||
else
|
||||
{
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
load.SetWaitAsync(true);
|
||||
|
||||
var (obj, hashCode) = await YIUILoadDI.LoadAssetAsyncFunc(pkgName, resName, assetType);
|
||||
|
||||
if (obj == null)
|
||||
{
|
||||
load.SetWaitAsync(false);
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!LoadHelper.AddLoadHandle(obj, load))
|
||||
{
|
||||
load.SetWaitAsync(false);
|
||||
load.RemoveRefCount();
|
||||
return null;
|
||||
}
|
||||
|
||||
load.ResetHandle(obj, hashCode);
|
||||
load.SetWaitAsync(false);
|
||||
return obj;
|
||||
}
|
||||
|
||||
internal static void LoadAssetAsync(string pkgName, string resName, Type assetType, Action<Object> action)
|
||||
{
|
||||
LoadAssetAsyncAction(pkgName, resName, assetType, action).Forget();
|
||||
}
|
||||
|
||||
private static async UniTaskVoid LoadAssetAsyncAction(
|
||||
string pkgName,
|
||||
string resName,
|
||||
Type assetType,
|
||||
Action<Object> action)
|
||||
{
|
||||
var asset = await LoadAssetAsync(pkgName, resName, assetType);
|
||||
if (asset == null)
|
||||
{
|
||||
Debug.LogError($"异步加载对象失败 {pkgName} {resName}");
|
||||
return;
|
||||
}
|
||||
|
||||
action?.Invoke(asset);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af1da48e054e4991bf2b00709c2e7516
|
||||
timeCreated: 1688370514
|
||||
51
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_YooAsset.cs
vendored
Normal file
51
UnityGame/Assets/Scripts/ThirdParty/YIUIFramework/Plugins/YIUILoad/YIUILoadHelper_YooAsset.cs
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using Object = UnityEngine.Object;
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace YIUIFramework
|
||||
{
|
||||
/// <summary>
|
||||
/// YooAsset扩展 因为他不需要pkgName
|
||||
/// </summary>
|
||||
internal static partial class YIUILoadHelper
|
||||
{
|
||||
internal static T LoadAsset<T>(string resName) where T : Object
|
||||
{
|
||||
return LoadAsset<T>("", resName);
|
||||
}
|
||||
|
||||
internal static async UniTask<T> LoadAssetAsync<T>(string resName) where T : Object
|
||||
{
|
||||
return await LoadAssetAsync<T>("", resName);
|
||||
}
|
||||
|
||||
internal static void LoadAssetAsync<T>(string resName, Action<T> action) where T : Object
|
||||
{
|
||||
LoadAssetAsync<T>("", resName, action);
|
||||
}
|
||||
|
||||
internal static bool VerifyAssetValidity(string resName)
|
||||
{
|
||||
return VerifyAssetValidity("", resName);
|
||||
}
|
||||
|
||||
#region 非泛型
|
||||
|
||||
internal static Object LoadAsset(string resName, Type assetType)
|
||||
{
|
||||
return LoadAsset("", resName, assetType);
|
||||
}
|
||||
|
||||
internal static async UniTask<Object> LoadAssetAsync(string resName, Type assetType)
|
||||
{
|
||||
return await LoadAssetAsync("", resName, assetType);
|
||||
}
|
||||
|
||||
internal static void LoadAssetAsync(string resName, Type assetType, Action<Object> action)
|
||||
{
|
||||
LoadAssetAsync("", resName, assetType, action);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d66f27a60b4442c8a85c434455c59597
|
||||
timeCreated: 1685414033
|
||||
@@ -0,0 +1,5 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("YIUIFramework")]
|
||||
[assembly: InternalsVisibleTo("YIUIBind")]
|
||||
[assembly: InternalsVisibleTo("I2Localization")]
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96c40634e0f646b58be3acb646412a4a
|
||||
timeCreated: 1685415173
|
||||
Reference in New Issue
Block a user