diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/DefaultResourcesHelper/DefaultResourceHelper.cs b/Assets/TEngine/Scripts/Runtime/Core/Res/DefaultResourcesHelper/DefaultResourceHelper.cs
index 9a4a000e..b6ba58bb 100644
--- a/Assets/TEngine/Scripts/Runtime/Core/Res/DefaultResourcesHelper/DefaultResourceHelper.cs
+++ b/Assets/TEngine/Scripts/Runtime/Core/Res/DefaultResourcesHelper/DefaultResourceHelper.cs
@@ -3,7 +3,7 @@ using UnityEngine;
namespace TEngine.Runtime
{
- public class DefaultResourceHelper:ResourceHelperBase
+ public class DefaultResourceHelper : ResourceHelperBase
{
public override GameObject Load(string path)
{
diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/IResourceHelper.cs b/Assets/TEngine/Scripts/Runtime/Core/Res/IResourceHelper.cs
index b515c4a2..7b6ad364 100644
--- a/Assets/TEngine/Scripts/Runtime/Core/Res/IResourceHelper.cs
+++ b/Assets/TEngine/Scripts/Runtime/Core/Res/IResourceHelper.cs
@@ -45,7 +45,7 @@ namespace TEngine.Runtime
///
///
///
- void LoadAsync(string path, Action callBack, bool withSubAsset = false) where T : class;
+ void LoadAsync(string path, Action callBack, bool withSubAsset = false) where T : UnityEngine.Object;
}
///
@@ -90,6 +90,7 @@ namespace TEngine.Runtime
///
///
///
- public abstract void LoadAsync(string path, Action callBack, bool withSubAsset = false) where T : class;
+ public abstract void LoadAsync(string path, Action callBack, bool withSubAsset = false)
+ where T : UnityEngine.Object;
}
}
\ No newline at end of file
diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs b/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs
index d4790e45..bb8a8aed 100644
--- a/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs
+++ b/Assets/TEngine/Scripts/Runtime/Core/Res/TResource.cs
@@ -9,6 +9,7 @@ namespace TEngine.Runtime
public class TResources
{
private static IResourceHelper m_ResourceHelper;
+
///
/// 设置游戏资源加载辅助器。
///
@@ -22,7 +23,7 @@ namespace TEngine.Runtime
m_ResourceHelper = resourceHelper;
}
-
+
public static GameObject Load(string path)
{
if (m_ResourceHelper == null)
@@ -30,8 +31,10 @@ namespace TEngine.Runtime
Log.Error("Resources helper is invalid.");
return null;
}
+
return m_ResourceHelper.Load(path);
}
+
public static GameObject Load(string path, Transform parent)
{
if (m_ResourceHelper == null)
@@ -39,8 +42,10 @@ namespace TEngine.Runtime
Log.Error("Resources helper is invalid.");
return null;
}
- return m_ResourceHelper.Load(path,parent);
+
+ return m_ResourceHelper.Load(path, parent);
}
+
public static T Load(string path) where T : UnityEngine.Object
{
if (m_ResourceHelper == null)
@@ -48,6 +53,7 @@ namespace TEngine.Runtime
Log.Error("Resources helper is invalid.");
return null;
}
+
return m_ResourceHelper.Load(path);
}
@@ -58,16 +64,20 @@ namespace TEngine.Runtime
Log.Error("Resources helper is invalid.");
return;
}
- m_ResourceHelper.LoadAsync(path,callBack);
+
+ m_ResourceHelper.LoadAsync(path, callBack);
}
- public static void LoadAsync(string path, Action callBack, bool withSubAsset = false)
+
+ public static void LoadAsync(string path, Action callBack, bool withSubAsset = false)
+ where T : UnityEngine.Object
{
if (m_ResourceHelper == null)
{
Log.Error("Resources helper is invalid.");
return;
}
- m_ResourceHelper.LoadAsync(path,callBack,withSubAsset);
+
+ m_ResourceHelper.LoadAsync(path, callBack, withSubAsset);
}
}
}
\ No newline at end of file
diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper.meta b/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper.meta
new file mode 100644
index 00000000..79849dfe
--- /dev/null
+++ b/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 23322791b7495354cab1d50cb1ddeaa4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper/UnityResourceHelper.cs b/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper/UnityResourceHelper.cs
new file mode 100644
index 00000000..c331ebc1
--- /dev/null
+++ b/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper/UnityResourceHelper.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections;
+using UnityEngine;
+
+namespace TEngine.Runtime
+{
+ public class UnityResourceHelper : ResourceHelperBase
+ {
+ public override GameObject Load(string path)
+ {
+ return Resources.Load(path);
+ }
+
+ public override GameObject Load(string path, Transform parent)
+ {
+ var obj = Load(path);
+ if (obj == null)
+ {
+ return null;
+ }
+
+ if (parent != null)
+ {
+ obj.transform.SetParent(parent);
+ }
+
+ return obj;
+ }
+
+ public override T Load(string path)
+ {
+ return Resources.Load(path);
+ }
+
+ public override void LoadAsync(string path, Action callBack)
+ {
+ MonoUtility.StartCoroutine(ReallyLoadAsync(name, callBack));
+ }
+
+ private IEnumerator ReallyLoadAsync(string name, Action callback = null) where T : UnityEngine.Object
+ {
+ ResourceRequest request = Resources.LoadAsync(name);
+
+ yield return request;
+
+ if (request.asset is GameObject)
+ {
+ callback?.Invoke(GameObject.Instantiate(request.asset) as T);
+ }
+ else
+ {
+ callback?.Invoke(request.asset as T);
+ }
+ }
+
+ public override void LoadAsync(string path, Action callBack, bool withSubAsset = false)
+ {
+ MonoUtility.StartCoroutine(ReallyLoadAsync(name, callBack));
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper/UnityResourceHelper.cs.meta b/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper/UnityResourceHelper.cs.meta
new file mode 100644
index 00000000..4bc6b47a
--- /dev/null
+++ b/Assets/TEngine/Scripts/Runtime/Core/Res/UnityResourceHelper/UnityResourceHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7b05b95aedc09ce40a0de7b4de542e33
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: