diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs b/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs index bb8a8aed..189774a5 100644 --- a/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs +++ b/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs @@ -24,6 +24,11 @@ namespace TEngine.Runtime m_ResourceHelper = resourceHelper; } + /// + /// 加载GameObject + /// + /// 路径 + /// public static GameObject Load(string path) { if (m_ResourceHelper == null) @@ -35,6 +40,12 @@ namespace TEngine.Runtime return m_ResourceHelper.Load(path); } + /// + /// 加载GameObject并设置父节点 + /// + /// 路径 + /// 父节点 + /// public static GameObject Load(string path, Transform parent) { if (m_ResourceHelper == null) @@ -46,6 +57,12 @@ namespace TEngine.Runtime return m_ResourceHelper.Load(path, parent); } + /// + /// 加载泛型 + /// + /// 路径 + /// 泛型(UnityEngine.Object) + /// public static T Load(string path) where T : UnityEngine.Object { if (m_ResourceHelper == null) @@ -57,6 +74,11 @@ namespace TEngine.Runtime return m_ResourceHelper.Load(path); } + /// + /// 异步加载GameObject + /// + /// 路径 + /// 回调 public static void LoadAsync(string path, Action callBack) { if (m_ResourceHelper == null) @@ -68,6 +90,13 @@ namespace TEngine.Runtime m_ResourceHelper.LoadAsync(path, callBack); } + /// + /// 异步加载泛型 + /// + /// + /// + /// + /// 泛型(UnityEngine.Object) public static void LoadAsync(string path, Action callBack, bool withSubAsset = false) where T : UnityEngine.Object { @@ -79,5 +108,96 @@ namespace TEngine.Runtime m_ResourceHelper.LoadAsync(path, callBack, withSubAsset); } + + /// + /// 异步加载资源。 + /// + /// 要加载资源的路径全名。 + /// 加载资源的优先级。 + /// 加载资源回调函数集。 + /// 用户自定义数据。 + public static void LoadAsset(string path, int priority, LoadAssetCallbacks loadAssetCallbacks, object userData) + { + if (loadAssetCallbacks == null) + { + Log.Error("Load asset callbacks is invalid."); + return; + } + + if (string.IsNullOrEmpty(path)) + { + if (loadAssetCallbacks.LoadAssetFailureCallback != null) + { + loadAssetCallbacks.LoadAssetFailureCallback(path, LoadResourceStatus.NotExist, + "Asset name is invalid.", userData); + } + + return; + } + + var timeWatcher = new GameTickWatcher(); + + m_ResourceHelper.LoadAsync(path, (gameObject) => + { + if (gameObject == null) + { + if (loadAssetCallbacks.LoadAssetFailureCallback != null) + { + loadAssetCallbacks.LoadAssetFailureCallback(path, LoadResourceStatus.NotExist, + Utility.Text.Format("Asset name '{0}' is invalid.", path), userData); + } + } + else + { + loadAssetCallbacks.LoadAssetSuccessCallback(path, gameObject, timeWatcher.ElapseTime(), userData); + } + }); + } + + /// + /// 异步加载资源。 + /// + /// 要加载资源的路径全名。 + /// 加载资源的优先级。 + /// 加载资源回调函数集。 + /// 用户自定义数据。 + public static void LoadAsset(string path, int priority, LoadAssetCallbacks loadAssetCallbacks, + object userData) where T : UnityEngine.Object + { + if (loadAssetCallbacks == null) + { + Log.Error("Load asset callbacks is invalid."); + return; + } + + if (string.IsNullOrEmpty(path)) + { + if (loadAssetCallbacks.LoadAssetFailureCallback != null) + { + loadAssetCallbacks.LoadAssetFailureCallback(path, LoadResourceStatus.NotExist, + "Asset name is invalid.", userData); + } + + return; + } + + var timeWatcher = new GameTickWatcher(); + + m_ResourceHelper.LoadAsync(path, (obj) => + { + if (obj == null) + { + if (loadAssetCallbacks.LoadAssetFailureCallback != null) + { + loadAssetCallbacks.LoadAssetFailureCallback(path, LoadResourceStatus.NotExist, + Utility.Text.Format("Asset name '{0}' is invalid.", path), userData); + } + } + else + { + loadAssetCallbacks.LoadAssetSuccessCallback(path, obj, timeWatcher.ElapseTime(), userData); + } + }); + } } } \ No newline at end of file