mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
泛型约束
泛型约束
This commit is contained in:
@@ -45,7 +45,7 @@ namespace TEngine.Runtime
|
|||||||
/// <param name="callBack"></param>
|
/// <param name="callBack"></param>
|
||||||
/// <param name="withSubAsset"></param>
|
/// <param name="withSubAsset"></param>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
void LoadAsync<T>(string path, Action<T> callBack, bool withSubAsset = false) where T : class;
|
void LoadAsync<T>(string path, Action<T> callBack, bool withSubAsset = false) where T : UnityEngine.Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -90,6 +90,7 @@ namespace TEngine.Runtime
|
|||||||
/// <param name="callBack"></param>
|
/// <param name="callBack"></param>
|
||||||
/// <param name="withSubAsset"></param>
|
/// <param name="withSubAsset"></param>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
public abstract void LoadAsync<T>(string path, Action<T> callBack, bool withSubAsset = false) where T : class;
|
public abstract void LoadAsync<T>(string path, Action<T> callBack, bool withSubAsset = false)
|
||||||
|
where T : UnityEngine.Object;
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -9,6 +9,7 @@ namespace TEngine.Runtime
|
|||||||
public class TResources
|
public class TResources
|
||||||
{
|
{
|
||||||
private static IResourceHelper m_ResourceHelper;
|
private static IResourceHelper m_ResourceHelper;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置游戏资源加载辅助器。
|
/// 设置游戏资源加载辅助器。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -30,8 +31,10 @@ namespace TEngine.Runtime
|
|||||||
Log.Error("Resources helper is invalid.");
|
Log.Error("Resources helper is invalid.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_ResourceHelper.Load(path);
|
return m_ResourceHelper.Load(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static GameObject Load(string path, Transform parent)
|
public static GameObject Load(string path, Transform parent)
|
||||||
{
|
{
|
||||||
if (m_ResourceHelper == null)
|
if (m_ResourceHelper == null)
|
||||||
@@ -39,8 +42,10 @@ namespace TEngine.Runtime
|
|||||||
Log.Error("Resources helper is invalid.");
|
Log.Error("Resources helper is invalid.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_ResourceHelper.Load(path, parent);
|
return m_ResourceHelper.Load(path, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T Load<T>(string path) where T : UnityEngine.Object
|
public static T Load<T>(string path) where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
if (m_ResourceHelper == null)
|
if (m_ResourceHelper == null)
|
||||||
@@ -48,6 +53,7 @@ namespace TEngine.Runtime
|
|||||||
Log.Error("Resources helper is invalid.");
|
Log.Error("Resources helper is invalid.");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_ResourceHelper.Load<T>(path);
|
return m_ResourceHelper.Load<T>(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,16 +64,20 @@ namespace TEngine.Runtime
|
|||||||
Log.Error("Resources helper is invalid.");
|
Log.Error("Resources helper is invalid.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ResourceHelper.LoadAsync(path, callBack);
|
m_ResourceHelper.LoadAsync(path, callBack);
|
||||||
}
|
}
|
||||||
public static void LoadAsync(string path, Action<AssetData> callBack, bool withSubAsset = false)
|
|
||||||
|
public static void LoadAsync<T>(string path, Action<T> callBack, bool withSubAsset = false)
|
||||||
|
where T : UnityEngine.Object
|
||||||
{
|
{
|
||||||
if (m_ResourceHelper == null)
|
if (m_ResourceHelper == null)
|
||||||
{
|
{
|
||||||
Log.Error("Resources helper is invalid.");
|
Log.Error("Resources helper is invalid.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_ResourceHelper.LoadAsync(path,callBack,withSubAsset);
|
|
||||||
|
m_ResourceHelper.LoadAsync<T>(path, callBack, withSubAsset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 23322791b7495354cab1d50cb1ddeaa4
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -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<GameObject>(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<T>(string path)
|
||||||
|
{
|
||||||
|
return Resources.Load<T>(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void LoadAsync(string path, Action<GameObject> callBack)
|
||||||
|
{
|
||||||
|
MonoUtility.StartCoroutine(ReallyLoadAsync(name, callBack));
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator ReallyLoadAsync<T>(string name, Action<T> callback = null) where T : UnityEngine.Object
|
||||||
|
{
|
||||||
|
ResourceRequest request = Resources.LoadAsync<T>(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<T>(string path, Action<T> callBack, bool withSubAsset = false)
|
||||||
|
{
|
||||||
|
MonoUtility.StartCoroutine(ReallyLoadAsync<T>(name, callBack));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7b05b95aedc09ce40a0de7b4de542e33
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Reference in New Issue
Block a user