diff --git a/Assets/YooAsset/Runtime/InitializeParameters.cs b/Assets/YooAsset/Runtime/InitializeParameters.cs
index a2698bca..5818df7f 100644
--- a/Assets/YooAsset/Runtime/InitializeParameters.cs
+++ b/Assets/YooAsset/Runtime/InitializeParameters.cs
@@ -38,6 +38,10 @@ namespace YooAsset
     /// </summary>
     public abstract class InitializeParameters
     {
+        /// <summary>
+        /// 同时加载Bundle文件的最大并发数
+        /// </summary>
+        public int BundleLoadingMaxConcurrency = int.MaxValue;
     }
 
     /// <summary>
diff --git a/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs
index e27a3ff1..d5837ade 100644
--- a/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs
+++ b/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs
@@ -9,7 +9,8 @@ namespace YooAsset
         private enum ESteps
         {
             None,
-            LoadFile,
+            CheckConcurrency,
+            LoadBundleFile,
             Done,
         }
 
@@ -57,17 +58,32 @@ namespace YooAsset
         }
         internal override void InternalStart()
         {
-            _steps = ESteps.LoadFile;
+            _steps = ESteps.CheckConcurrency;
         }
         internal override void InternalUpdate()
         {
             if (_steps == ESteps.None || _steps == ESteps.Done)
                 return;
 
-            if (_steps == ESteps.LoadFile)
+            if (_steps == ESteps.CheckConcurrency)
+            {
+                if (IsWaitForAsyncComplete)
+                {
+                    _steps = ESteps.LoadBundleFile;
+                }
+                else
+                {
+                    if (_resourceManager.BundleLoadingIsBusy())
+                        return;
+                    _steps = ESteps.LoadBundleFile;
+                }
+            }
+
+            if (_steps == ESteps.LoadBundleFile)
             {
                 if (_loadBundleOp == null)
                 {
+                    _resourceManager.BundleLoadingCounter++;
                     _loadBundleOp = LoadBundleInfo.LoadBundleFile();
                     _loadBundleOp.StartOperation();
                     AddChildOperation(_loadBundleOp);
@@ -103,6 +119,9 @@ namespace YooAsset
                     Status = EOperationStatus.Failed;
                     Error = _loadBundleOp.Error;
                 }
+
+                // 统计计数减少
+                _resourceManager.BundleLoadingCounter--;
             }
         }
         internal override void InternalWaitForAsyncComplete()
diff --git a/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs b/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs
index 03bf2a10..bf386dcd 100644
--- a/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs
+++ b/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs
@@ -14,6 +14,7 @@ namespace YooAsset
         internal readonly List<SceneHandle> SceneHandles = new List<SceneHandle>(100);
         private long _sceneCreateIndex = 0;
         private IBundleQuery _bundleQuery;
+        private int _bundleLoadingMaxConcurrency;
 
         /// <summary>
         /// 所属包裹
@@ -25,6 +26,11 @@ namespace YooAsset
         /// </summary>
         public bool LockLoadOperation = false;
 
+        /// <summary>
+        /// 统计正在加载的Bundle文件数量
+        /// </summary>
+        public int BundleLoadingCounter = 0;
+
 
         public ResourceManager(string packageName)
         {
@@ -34,8 +40,9 @@ namespace YooAsset
         /// <summary>
         /// 初始化
         /// </summary>
-        public void Initialize(IBundleQuery bundleServices)
+        public void Initialize(InitializeParameters parameters, IBundleQuery bundleServices)
         {
+            _bundleLoadingMaxConcurrency = parameters.BundleLoadingMaxConcurrency;
             _bundleQuery = bundleServices;
             SceneManager.sceneUnloaded += OnSceneUnloaded;
         }
@@ -310,6 +317,10 @@ namespace YooAsset
         {
             return LoaderDic.Count > 0;
         }
+        internal bool BundleLoadingIsBusy()
+        {
+            return BundleLoadingCounter >= _bundleLoadingMaxConcurrency;
+        }
 
         private LoadBundleFileOperation CreateBundleFileLoaderInternal(BundleInfo bundleInfo)
         {
diff --git a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
index 9e62d68c..d30511c8 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
@@ -100,7 +100,7 @@ namespace YooAsset
             var playModeImpl = new PlayModeImpl(PackageName, _playMode);
             _bundleQuery = playModeImpl;
             _playModeImpl = playModeImpl;
-            _resourceManager.Initialize(_bundleQuery);
+            _resourceManager.Initialize(parameters, _bundleQuery);
 
             // 初始化资源系统
             InitializationOperation initializeOperation;
@@ -162,6 +162,10 @@ namespace YooAsset
                 throw new Exception($"Editor simulate mode only support unity editor.");
 #endif
 
+            // 检测初始化参数
+            if (parameters.BundleLoadingMaxConcurrency <= 0)
+                throw new Exception($"{nameof(parameters.BundleLoadingMaxConcurrency)} value must be greater than zero.");
+
             // 鉴定运行模式
             if (parameters is EditorSimulateModeParameters)
                 _playMode = EPlayMode.EditorSimulateMode;