Ejemplo n.º 1
0
 // Addressable Assets System
 public static UniTask <T> LoadAddressables <T>(object key) where T : class
 {
     return(new UniTask <T>(() =>
     {
         var completionSource = new UniTaskCompletionSource <T>();
         Addressables.LoadAsset <T>(key).Completed += x => completionSource.TrySetResult(x.Result);
         return completionSource.Task;
     }));
 }
Ejemplo n.º 2
0
 // Resources.LoadAsync
 public static UniTask <T> LoadResources <T>(string path) where T : UnityEngine.Object
 {
     return(new UniTask <T>(() =>
     {
         var completionSource = new UniTaskCompletionSource <T>();
         var loadTask = Resources.LoadAsync <T>(path);
         loadTask.completed += x => completionSource.TrySetResult(loadTask.asset as T);
         return completionSource.Task;
     }));
 }
Ejemplo n.º 3
0
 public void OnNext(T value)
 {
     hasValue = true;
     try
     {
         promise.TrySetResult(value);
     }
     finally
     {
         registration.Dispose();
         disposable.Dispose();
     }
 }
Ejemplo n.º 4
0
 public void OnCompleted()
 {
     try
     {
         if (hasValue)
         {
             promise.TrySetResult(latestValue);
         }
         else
         {
             promise.TrySetException(new InvalidOperationException("Sequence has no elements"));
         }
     }
     finally
     {
         registration.Dispose();
         disposable.Dispose();
     }
 }