| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- using UnityEngine;
 
- using UnityEngine.SceneManagement;
 
- namespace YooAsset
 
- {
 
- 	/// <summary>
 
- 	/// 场景卸载异步操作类
 
- 	/// </summary>
 
- 	public sealed class UnloadSceneOperation : AsyncOperationBase
 
- 	{
 
- 		private enum EFlag
 
- 		{
 
- 			Normal,
 
- 			Error,
 
- 		}
 
- 		private enum ESteps
 
- 		{
 
- 			None,
 
- 			UnLoad,
 
- 			Checking,
 
- 			Done,
 
- 		}
 
- 		private readonly EFlag _flag;
 
- 		private ESteps _steps = ESteps.None;
 
- 		private Scene _scene;
 
- 		private AsyncOperation _asyncOp;
 
- 		internal UnloadSceneOperation(string error)
 
- 		{
 
- 			_flag = EFlag.Error;
 
- 			Error = error;
 
- 		}
 
- 		internal UnloadSceneOperation(Scene scene)
 
- 		{
 
- 			_flag = EFlag.Normal;
 
- 			_scene = scene;
 
- 		}
 
- 		internal override void Start()
 
- 		{
 
- 			if (_flag == EFlag.Normal)
 
- 			{
 
- 				_steps = ESteps.UnLoad;
 
- 			}
 
- 			else if (_flag == EFlag.Error)
 
- 			{
 
- 				_steps = ESteps.Done;
 
- 				Status = EOperationStatus.Failed;
 
- 			}
 
- 			else
 
- 			{
 
- 				throw new System.NotImplementedException(_flag.ToString());
 
- 			}
 
- 		}
 
- 		internal override void Update()
 
- 		{
 
- 			if (_steps == ESteps.None || _steps == ESteps.Done)
 
- 				return;
 
- 			if (_steps == ESteps.UnLoad)
 
- 			{
 
- 				if (_scene.IsValid() && _scene.isLoaded)
 
- 				{
 
- 					_asyncOp = SceneManager.UnloadSceneAsync(_scene);
 
- 					_steps = ESteps.Checking;
 
- 				}
 
- 				else
 
- 				{
 
- 					Error = "Scene is invalid or is not loaded.";
 
- 					_steps = ESteps.Done;
 
- 					Status = EOperationStatus.Failed;
 
- 				}
 
- 			}
 
- 			if (_steps == ESteps.Checking)
 
- 			{
 
- 				Progress = _asyncOp.progress;
 
- 				if (_asyncOp.isDone == false)
 
- 					return;
 
- 				_steps = ESteps.Done;
 
- 				Status = EOperationStatus.Succeed;
 
- 			}
 
- 		}
 
- 	}
 
- }
 
 
  |