privatestruct DefaultLoader : IUILoader { public GameObject Load<T>() where T : IUIPanel { return Resources.Load<GameObject>(typeof(T).Name); }
publicvoidLoadAsync<T>(Action<GameObject> callback) where T : IUIPanel { var handle = Resources.LoadAsync<GameObject>(typeof(T).Name); handle.completed += operation => { callback(handle.asset as GameObject); }; }
publicasyncTask<GameObject> LoadAsync<T>() where T : IUIPanel { TaskCompletionSource<GameObject> tcs = new TaskCompletionSource<GameObject>(); var handle = Resources.LoadAsync<GameObject>(typeof(T).Name); tcs.SetResult(handle.asset as GameObject); await tcs.Task; return tcs.Task.Result; }