using libx; using System; using System.Collections.Generic; namespace ET { public class ResourceHelper { public static T LoadAsset(string assetPath) where T : UnityEngine.Object { var assetRequest = Assets.LoadAsset(assetPath, typeof(T)); var asset = assetRequest.asset; return asset as T; } public static UnityEngine.Object LoadAsset(string assetPath, Type type) { var assetRequest = Assets.LoadAsset(assetPath, type); var asset = assetRequest.asset; return asset; } public static async ETTask LoadAssetAsync(string assetPath) where T : UnityEngine.Object { var assetRequest = Assets.LoadAssetAsync(assetPath, typeof(T)); if (assetRequest.isDone) { var asset = assetRequest.asset; return asset as T; } ETTaskCompletionSource tcs = new ETTaskCompletionSource(); assetRequest.completed += (AssetRequest request) => { var 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; } } }