diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs new file mode 100644 index 00000000..393b31ce --- /dev/null +++ b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs @@ -0,0 +1,176 @@ +using System; + +namespace TEngine.Runtime +{ + /// + /// 加载资源成功回调函数。 + /// + /// 要加载的资源名称。 + /// 已加载的资源。 + /// 加载持续时间。 + /// 用户自定义数据。 + public delegate void LoadAssetSuccessCallback(string assetName, object asset, float duration, object userData); + + /// + /// 加载资源失败回调函数。 + /// + /// 要加载的资源名称。 + /// 加载资源状态。 + /// 错误信息。 + /// 用户自定义数据。 + public delegate void LoadAssetFailureCallback(string assetName, LoadResourceStatus status, string errorMessage, object userData); + + /// + /// 加载资源更新回调函数。 + /// + /// 要加载的资源名称。 + /// 加载资源进度。 + /// 用户自定义数据。 + public delegate void LoadAssetUpdateCallback(string assetName, float progress, object userData); + + /// + /// 加载资源时加载依赖资源回调函数。 + /// + /// 要加载的资源名称。 + /// 被加载的依赖资源名称。 + /// 当前已加载依赖资源数量。 + /// 总共加载依赖资源数量。 + /// 用户自定义数据。 + public delegate void LoadAssetDependencyAssetCallback(string assetName, string dependencyAssetName, int loadedCount, int totalCount, object userData); + + /// + /// 加载资源回调函数集。 + /// + public sealed class LoadAssetCallbacks + { + private readonly LoadAssetSuccessCallback m_LoadAssetSuccessCallback; + private readonly LoadAssetFailureCallback m_LoadAssetFailureCallback; + private readonly LoadAssetUpdateCallback m_LoadAssetUpdateCallback; + private readonly LoadAssetDependencyAssetCallback m_LoadAssetDependencyAssetCallback; + + /// + /// 初始化加载资源回调函数集的新实例。 + /// + /// 加载资源成功回调函数。 + public LoadAssetCallbacks(LoadAssetSuccessCallback loadAssetSuccessCallback) + : this(loadAssetSuccessCallback, null, null, null) + { + } + + /// + /// 初始化加载资源回调函数集的新实例。 + /// + /// 加载资源成功回调函数。 + /// 加载资源失败回调函数。 + public LoadAssetCallbacks(LoadAssetSuccessCallback loadAssetSuccessCallback, LoadAssetFailureCallback loadAssetFailureCallback) + : this(loadAssetSuccessCallback, loadAssetFailureCallback, null, null) + { + } + + /// + /// 初始化加载资源回调函数集的新实例。 + /// + /// 加载资源成功回调函数。 + /// 加载资源更新回调函数。 + public LoadAssetCallbacks(LoadAssetSuccessCallback loadAssetSuccessCallback, LoadAssetUpdateCallback loadAssetUpdateCallback) + : this(loadAssetSuccessCallback, null, loadAssetUpdateCallback, null) + { + } + + /// + /// 初始化加载资源回调函数集的新实例。 + /// + /// 加载资源成功回调函数。 + /// 加载资源时加载依赖资源回调函数。 + public LoadAssetCallbacks(LoadAssetSuccessCallback loadAssetSuccessCallback, LoadAssetDependencyAssetCallback loadAssetDependencyAssetCallback) + : this(loadAssetSuccessCallback, null, null, loadAssetDependencyAssetCallback) + { + } + + /// + /// 初始化加载资源回调函数集的新实例。 + /// + /// 加载资源成功回调函数。 + /// 加载资源失败回调函数。 + /// 加载资源更新回调函数。 + public LoadAssetCallbacks(LoadAssetSuccessCallback loadAssetSuccessCallback, LoadAssetFailureCallback loadAssetFailureCallback, LoadAssetUpdateCallback loadAssetUpdateCallback) + : this(loadAssetSuccessCallback, loadAssetFailureCallback, loadAssetUpdateCallback, null) + { + } + + /// + /// 初始化加载资源回调函数集的新实例。 + /// + /// 加载资源成功回调函数。 + /// 加载资源失败回调函数。 + /// 加载资源时加载依赖资源回调函数。 + public LoadAssetCallbacks(LoadAssetSuccessCallback loadAssetSuccessCallback, LoadAssetFailureCallback loadAssetFailureCallback, LoadAssetDependencyAssetCallback loadAssetDependencyAssetCallback) + : this(loadAssetSuccessCallback, loadAssetFailureCallback, null, loadAssetDependencyAssetCallback) + { + } + + /// + /// 初始化加载资源回调函数集的新实例。 + /// + /// 加载资源成功回调函数。 + /// 加载资源失败回调函数。 + /// 加载资源更新回调函数。 + /// 加载资源时加载依赖资源回调函数。 + public LoadAssetCallbacks(LoadAssetSuccessCallback loadAssetSuccessCallback, LoadAssetFailureCallback loadAssetFailureCallback, LoadAssetUpdateCallback loadAssetUpdateCallback, LoadAssetDependencyAssetCallback loadAssetDependencyAssetCallback) + { + if (loadAssetSuccessCallback == null) + { + throw new Exception("Load asset success callback is invalid."); + } + + m_LoadAssetSuccessCallback = loadAssetSuccessCallback; + m_LoadAssetFailureCallback = loadAssetFailureCallback; + m_LoadAssetUpdateCallback = loadAssetUpdateCallback; + m_LoadAssetDependencyAssetCallback = loadAssetDependencyAssetCallback; + } + + /// + /// 获取加载资源成功回调函数。 + /// + public LoadAssetSuccessCallback LoadAssetSuccessCallback + { + get + { + return m_LoadAssetSuccessCallback; + } + } + + /// + /// 获取加载资源失败回调函数。 + /// + public LoadAssetFailureCallback LoadAssetFailureCallback + { + get + { + return m_LoadAssetFailureCallback; + } + } + + /// + /// 获取加载资源更新回调函数。 + /// + public LoadAssetUpdateCallback LoadAssetUpdateCallback + { + get + { + return m_LoadAssetUpdateCallback; + } + } + + /// + /// 获取加载资源时加载依赖资源回调函数。 + /// + public LoadAssetDependencyAssetCallback LoadAssetDependencyAssetCallback + { + get + { + return m_LoadAssetDependencyAssetCallback; + } + } + } +} diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs.meta b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs.meta new file mode 100644 index 00000000..00d42237 --- /dev/null +++ b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: deef85a37e674f9eb65b21b9c6cda3a9 +timeCreated: 1662362043 \ No newline at end of file diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs new file mode 100644 index 00000000..670dd1e7 --- /dev/null +++ b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs @@ -0,0 +1,38 @@ +namespace TEngine.Runtime +{ + /// + /// 加载资源状态。 + /// + public enum LoadResourceStatus : byte + { + /// + /// 加载资源完成。 + /// + Success = 0, + + /// + /// 资源不存在。 + /// + NotExist, + + /// + /// 资源尚未准备完毕。 + /// + NotReady, + + /// + /// 依赖资源错误。 + /// + DependencyError, + + /// + /// 资源类型错误。 + /// + TypeError, + + /// + /// 加载资源错误。 + /// + AssetError + } +} \ No newline at end of file diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs.meta b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs.meta new file mode 100644 index 00000000..67234cbd --- /dev/null +++ b/Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9a03191d699ea114b9bc843503f353bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: