CTT/Unity/Assets/Model/Game/Helper/ResourceHelper.cs

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