using System.IO; using System.Threading.Tasks; using UnityEngine; namespace ET { public class AssetsBundleLoaderAsyncSystem : UpdateSystem { public override void Update(AssetsBundleLoaderAsync self) { self.Update(); } } public class AssetsBundleLoaderAsync : Entity { private AssetBundleCreateRequest request; private ETTaskCompletionSource tcs; public void Update() { if (!this.request.isDone) { return; } ETTaskCompletionSource t = tcs; t.SetResult(this.request.assetBundle); } public override void Dispose() { if (this.IsDisposed) { return; } base.Dispose(); } public ETTask LoadAsync(string path) { this.tcs = new ETTaskCompletionSource(); this.request = AssetBundle.LoadFromFileAsync(path); return this.tcs.Task; } } }