using System.Threading.Tasks; using UnityEngine; using UnityEngine.SceneManagement; namespace Model { public class SceneChangeComponent: Component { public AsyncOperation loadMapOperation; public TaskCompletionSource tcs; public float deltaTime; public int lastProgress = 0; public Task ChangeSceneAsync(SceneType sceneEnum) { this.tcs = new TaskCompletionSource(); // 加载map this.loadMapOperation = SceneManager.LoadSceneAsync(sceneEnum.ToString()); return this.tcs.Task; } public int Process { get { if (this.loadMapOperation == null) { return 0; } return (int)(this.loadMapOperation.progress * 100); } } public void Finish() { this.tcs.SetResult(true); } public override void Dispose() { if (this.Id == 0) { return; } base.Dispose(); } } }