From 1a9ab2d78cc3dda2fd799d2b98e1e289eace0ae8 Mon Sep 17 00:00:00 2001
From: ALEXTANG <574809918@qq.com>
Date: Mon, 5 Sep 2022 15:15:51 +0800
Subject: [PATCH] LoadAssetCallBack
LoadAssetCallBack
---
.../Runtime/Core/Res/LoadAssetCallbacks.cs | 176 ++++++++++++++++++
.../Core/Res/LoadAssetCallbacks.cs.meta | 3 +
.../Runtime/Core/Res/LoadResourceStatus.cs | 38 ++++
.../Core/Res/LoadResourceStatus.cs.meta | 11 ++
4 files changed, 228 insertions(+)
create mode 100644 Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs
create mode 100644 Assets/TEngine/Scripts/Runtime/Core/Res/LoadAssetCallbacks.cs.meta
create mode 100644 Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs
create mode 100644 Assets/TEngine/Scripts/Runtime/Core/Res/LoadResourceStatus.cs.meta
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: