zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Unity/Assets/Model/Game/Helper/ResourceHelper.cs

65 lines
2.0 KiB
C#
Raw Normal View History

#if UNITY
using libx;
2021-04-08 20:09:59 +08:00
using System;
using System.Collections.Generic;
namespace ET
{
public class ResourceHelper
{
public static T LoadAsset<T>(string assetPath)
where T : UnityEngine.Object
{
2021-04-11 19:50:39 +08:00
AssetRequest assetRequest = Assets.LoadAsset(assetPath, typeof(T));
UnityEngine.Object asset = assetRequest.asset;
2021-04-08 20:09:59 +08:00
return asset as T;
}
public static UnityEngine.Object LoadAsset(string assetPath, Type type)
{
2021-04-11 19:50:39 +08:00
AssetRequest assetRequest = Assets.LoadAsset(assetPath, type);
UnityEngine.Object asset = assetRequest.asset;
2021-04-08 20:09:59 +08:00
return asset;
}
public static async ETTask<T> LoadAssetAsync<T>(string assetPath)
where T : UnityEngine.Object
{
2021-04-11 19:50:39 +08:00
AssetRequest assetRequest = Assets.LoadAssetAsync(assetPath, typeof(T));
2021-04-08 20:09:59 +08:00
if (assetRequest.isDone)
{
2021-04-11 19:50:39 +08:00
UnityEngine.Object asset = assetRequest.asset;
2021-04-08 20:09:59 +08:00
return asset as T;
}
ETTaskCompletionSource<T> tcs = new ETTaskCompletionSource<T>();
assetRequest.completed += (AssetRequest request) =>
{
2021-04-11 19:50:39 +08:00
UnityEngine.Object asset = request.asset;
2021-04-08 20:09:59 +08:00
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