65 lines
2.0 KiB
C#
65 lines
2.0 KiB
C#
#if UNITY
|
|
using libx;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ET
|
|
{
|
|
public class ResourceHelper
|
|
{
|
|
public static T LoadAsset<T>(string assetPath)
|
|
where T : UnityEngine.Object
|
|
{
|
|
AssetRequest assetRequest = Assets.LoadAsset(assetPath, typeof(T));
|
|
UnityEngine.Object asset = assetRequest.asset;
|
|
return asset as T;
|
|
}
|
|
public static UnityEngine.Object LoadAsset(string assetPath, Type type)
|
|
{
|
|
AssetRequest assetRequest = Assets.LoadAsset(assetPath, type);
|
|
UnityEngine.Object asset = assetRequest.asset;
|
|
return asset;
|
|
}
|
|
public static async ETTask<T> LoadAssetAsync<T>(string assetPath)
|
|
where T : UnityEngine.Object
|
|
{
|
|
AssetRequest assetRequest = Assets.LoadAssetAsync(assetPath, typeof(T));
|
|
if (assetRequest.isDone)
|
|
{
|
|
UnityEngine.Object asset = assetRequest.asset;
|
|
return asset as T;
|
|
}
|
|
ETTaskCompletionSource<T> tcs = new ETTaskCompletionSource<T>();
|
|
assetRequest.completed += (AssetRequest request) =>
|
|
{
|
|
UnityEngine.Object asset = request.asset;
|
|
tcs.SetResult(asset as T);
|
|
};
|
|
return await tcs.Task;
|
|
}
|
|
private const string SceneExt = ".unity";
|
|
public static ETTask LoadSceneAsync(string sceneName, bool isAddtion)
|
|
{
|
|
ETTaskCompletionSource tcs = new ETTaskCompletionSource();
|
|
if (!sceneName.Contains(SceneExt))
|
|
sceneName += SceneExt;
|
|
SceneAssetRequest sceneRequest = Assets.LoadSceneAsync(sceneName, isAddtion);
|
|
sceneRequest.completed += (AssetRequest request) =>
|
|
{
|
|
tcs.SetResult();
|
|
};
|
|
return tcs.Task;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
#else
|
|
namespace ET
|
|
{
|
|
public class ResourceHelper
|
|
{
|
|
|
|
}
|
|
}
|
|
#endif |