diff --git a/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs b/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs
index 9dd0d3c..0fac84d 100644
--- a/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs
+++ b/Assets/YooAsset/Runtime/AssetSystem/AssetSystem.cs
@@ -169,7 +169,7 @@ namespace YooAsset
 		/// <summary>
 		/// 加载场景
 		/// </summary>
-		public SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode, int priority)
+		public SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode, bool allowSceneActivation ,int priority)
 		{
 			if (assetInfo.IsInvalid)
 			{
@@ -190,9 +190,9 @@ namespace YooAsset
 			ProviderBase provider;
 			{
 				if (_simulationOnEditor)
-					provider = new DatabaseSceneProvider(this, providerGUID, assetInfo, sceneMode, priority);
+					provider = new DatabaseSceneProvider(this, providerGUID, assetInfo, sceneMode,allowSceneActivation, priority);
 				else
-					provider = new BundledSceneProvider(this, providerGUID, assetInfo, sceneMode, priority);
+					provider = new BundledSceneProvider(this, providerGUID, assetInfo, sceneMode,allowSceneActivation, priority);
 				provider.InitSpawnDebugInfo();
 				_providerList.Add(provider);
 				_providerDic.Add(providerGUID, provider);
diff --git a/Assets/YooAsset/Runtime/AssetSystem/Handles/SceneOperationHandle.cs b/Assets/YooAsset/Runtime/AssetSystem/Handles/SceneOperationHandle.cs
index b170a08..051a6dc 100644
--- a/Assets/YooAsset/Runtime/AssetSystem/Handles/SceneOperationHandle.cs
+++ b/Assets/YooAsset/Runtime/AssetSystem/Handles/SceneOperationHandle.cs
@@ -6,9 +6,10 @@ namespace YooAsset
 	{
 		private System.Action<SceneOperationHandle> _callback;
 		internal string PackageName { set; get; }
-
+		private ProviderBase _providerBase;
 		internal SceneOperationHandle(ProviderBase provider) : base(provider)
 		{
+			_providerBase = provider;
 		}
 		internal override void InvokeCallback()
 		{
@@ -58,9 +59,23 @@ namespace YooAsset
 			if (IsValidWithWarning == false)
 				return false;
 
-			if (SceneObject.IsValid() && SceneObject.isLoaded)
+			if (SceneObject.IsValid())
 			{
-				return SceneManager.SetActiveScene(SceneObject);
+				var isChangeState = false;
+#if UNITY_EDITOR
+				if (_providerBase is DatabaseSceneProvider dsp)
+				{
+					dsp.AsyncOp.allowSceneActivation = true;
+					isChangeState = true;
+				}
+#endif
+				if (_providerBase is BundledSceneProvider bsp)
+				{
+					bsp.AsyncOp.allowSceneActivation = true;
+					isChangeState = true;
+				}
+				
+				return isChangeState;
 			}
 			else
 			{
diff --git a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSceneProvider.cs b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSceneProvider.cs
index 85ce68b..ce0acce 100644
--- a/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSceneProvider.cs
+++ b/Assets/YooAsset/Runtime/AssetSystem/Provider/BundledSceneProvider.cs
@@ -11,13 +11,15 @@ namespace YooAsset
 		public readonly LoadSceneMode SceneMode;
 		private readonly string _sceneName;
 		private readonly int _priority;
-		private AsyncOperation _asyncOp;
+		private readonly bool _allowSceneActivation;
+		public AsyncOperation AsyncOp { private set; get; }
 
-		public BundledSceneProvider(AssetSystemImpl impl, string providerGUID, AssetInfo assetInfo, LoadSceneMode sceneMode, int priority) : base(impl, providerGUID, assetInfo)
+		public BundledSceneProvider(AssetSystemImpl impl, string providerGUID, AssetInfo assetInfo, LoadSceneMode sceneMode, bool allowSceneActivation, int priority) : base(impl, providerGUID, assetInfo)
 		{
 			SceneMode = sceneMode;
 			_sceneName = Path.GetFileNameWithoutExtension(assetInfo.AssetPath);
 			_priority = priority;
+			_allowSceneActivation = allowSceneActivation;
 		}
 		public override void Update()
 		{
@@ -62,11 +64,11 @@ namespace YooAsset
 			if (Status == EStatus.Loading)
 			{
 				// 注意:如果场景不存在则返回NULL
-				_asyncOp = SceneManager.LoadSceneAsync(MainAssetInfo.AssetPath, SceneMode);
-				if (_asyncOp != null)
+				AsyncOp = SceneManager.LoadSceneAsync(MainAssetInfo.AssetPath, SceneMode);
+				if (AsyncOp != null)
 				{
-					_asyncOp.allowSceneActivation = true;
-					_asyncOp.priority = _priority;
+					AsyncOp.allowSceneActivation = _allowSceneActivation;
+					AsyncOp.priority = _priority;
 					SceneObject = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);
 					Status = EStatus.Checking;
 				}
@@ -82,8 +84,8 @@ namespace YooAsset
 			// 3. 检测加载结果
 			if (Status == EStatus.Checking)
 			{
-				Progress = _asyncOp.progress;
-				if (_asyncOp.isDone)
+				Progress = AsyncOp.progress;
+				if (AsyncOp.isDone)
 				{
 					Status = SceneObject.IsValid() ? EStatus.Succeed : EStatus.Failed;
 					if (Status == EStatus.Failed)
diff --git a/Assets/YooAsset/Runtime/AssetSystem/Provider/DatabaseSceneProvider.cs b/Assets/YooAsset/Runtime/AssetSystem/Provider/DatabaseSceneProvider.cs
index 23e2cab..3a5cb69 100644
--- a/Assets/YooAsset/Runtime/AssetSystem/Provider/DatabaseSceneProvider.cs
+++ b/Assets/YooAsset/Runtime/AssetSystem/Provider/DatabaseSceneProvider.cs
@@ -7,12 +7,14 @@ namespace YooAsset
 	{
 		public readonly LoadSceneMode SceneMode;
 		private readonly int _priority;
-		private AsyncOperation _asyncOp;
+		private readonly  bool _allowSceneActivation;
+		public AsyncOperation AsyncOp { private set; get; }
 
-		public DatabaseSceneProvider(AssetSystemImpl impl, string providerGUID, AssetInfo assetInfo, LoadSceneMode sceneMode, int priority) : base(impl, providerGUID, assetInfo)
+		public DatabaseSceneProvider(AssetSystemImpl impl, string providerGUID, AssetInfo assetInfo, LoadSceneMode sceneMode, bool allowSceneActivation, int priority) : base(impl, providerGUID, assetInfo)
 		{
 			SceneMode = sceneMode;
 			_priority = priority;
+			_allowSceneActivation = allowSceneActivation;
 		}
 		public override void Update()
 		{
@@ -52,11 +54,11 @@ namespace YooAsset
 			{
 				LoadSceneParameters loadSceneParameters = new LoadSceneParameters();
 				loadSceneParameters.loadSceneMode = SceneMode;
-				_asyncOp = UnityEditor.SceneManagement.EditorSceneManager.LoadSceneAsyncInPlayMode(MainAssetInfo.AssetPath, loadSceneParameters);
-				if (_asyncOp != null)
+				AsyncOp = UnityEditor.SceneManagement.EditorSceneManager.LoadSceneAsyncInPlayMode(MainAssetInfo.AssetPath, loadSceneParameters);
+				if (AsyncOp != null)
 				{
-					_asyncOp.allowSceneActivation = true;
-					_asyncOp.priority = _priority;
+					AsyncOp.allowSceneActivation = _allowSceneActivation;
+					AsyncOp.priority = _priority;
 					SceneObject = SceneManager.GetSceneAt(SceneManager.sceneCount - 1);
 					Status = EStatus.Checking;
 				}
@@ -72,8 +74,8 @@ namespace YooAsset
 			// 3. 检测加载结果
 			if (Status == EStatus.Checking)
 			{
-				Progress = _asyncOp.progress;
-				if (_asyncOp.isDone)
+				Progress = AsyncOp.progress;
+				if (AsyncOp.isDone)
 				{
 					Status = SceneObject.IsValid() ? EStatus.Succeed : EStatus.Failed;
 					if (Status == EStatus.Failed)
diff --git a/Assets/YooAsset/Runtime/PackageSystem/ResourcePackage.cs b/Assets/YooAsset/Runtime/PackageSystem/ResourcePackage.cs
index 3bf370d..61cae21 100644
--- a/Assets/YooAsset/Runtime/PackageSystem/ResourcePackage.cs
+++ b/Assets/YooAsset/Runtime/PackageSystem/ResourcePackage.cs
@@ -455,12 +455,13 @@ namespace YooAsset
 		/// </summary>
 		/// <param name="location">场景的定位地址</param>
 		/// <param name="sceneMode">场景加载模式</param>
+		/// <param name="allowSceneActivation">场景加载后自动激活</param>
 		/// <param name="priority">优先级</param>
-		public SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, int priority = 100)
+		public SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, bool allowSceneActivation = true, int priority = 100)
 		{
 			DebugCheckInitialize();
 			AssetInfo assetInfo = ConvertLocationToAssetInfo(location, null);
-			var handle = _assetSystemImpl.LoadSceneAsync(assetInfo, sceneMode, priority);
+			var handle = _assetSystemImpl.LoadSceneAsync(assetInfo, sceneMode,allowSceneActivation, priority);
 			return handle;
 		}
 
@@ -469,11 +470,12 @@ namespace YooAsset
 		/// </summary>
 		/// <param name="assetInfo">场景的资源信息</param>
 		/// <param name="sceneMode">场景加载模式</param>
+		/// <param name="allowSceneActivation">场景加载后自动激活</param>
 		/// <param name="priority">优先级</param>
-		public SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, int priority = 100)
+		public SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, bool allowSceneActivation = true, int priority = 100)
 		{
 			DebugCheckInitialize();
-			var handle = _assetSystemImpl.LoadSceneAsync(assetInfo, sceneMode, priority);
+			var handle = _assetSystemImpl.LoadSceneAsync(assetInfo, sceneMode,allowSceneActivation, priority);
 			return handle;
 		}
 		#endregion
diff --git a/Assets/YooAsset/Runtime/YooAssetsExtension.cs b/Assets/YooAsset/Runtime/YooAssetsExtension.cs
index d2a82d4..3900a9e 100644
--- a/Assets/YooAsset/Runtime/YooAssetsExtension.cs
+++ b/Assets/YooAsset/Runtime/YooAssetsExtension.cs
@@ -128,11 +128,12 @@ namespace YooAsset
 		/// </summary>
 		/// <param name="location">场景的定位地址</param>
 		/// <param name="sceneMode">场景加载模式</param>
+		/// <param name="allowSceneActivation">场景加载后自动激活</param>
 		/// <param name="priority">优先级</param>
-		public static SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, int priority = 100)
+		public static SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single,bool allowSceneActivation = true, int priority = 100)
 		{
 			DebugCheckDefaultPackageValid();
-			return _defaultPackage.LoadSceneAsync(location, sceneMode, priority);
+			return _defaultPackage.LoadSceneAsync(location, sceneMode, allowSceneActivation, priority);
 		}
 
 		/// <summary>
@@ -140,11 +141,12 @@ namespace YooAsset
 		/// </summary>
 		/// <param name="assetInfo">场景的资源信息</param>
 		/// <param name="sceneMode">场景加载模式</param>
+		/// <param name="allowSceneActivation">场景加载后自动激活</param>
 		/// <param name="priority">优先级</param>
-		public static SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, int priority = 100)
+		public static SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, bool allowSceneActivation = true, int priority = 100)
 		{
 			DebugCheckDefaultPackageValid();
-			return _defaultPackage.LoadSceneAsync(assetInfo, sceneMode, priority);
+			return _defaultPackage.LoadSceneAsync(assetInfo, sceneMode, allowSceneActivation, priority);
 		}
 		#endregion