遇到的问题如标题所示所以写了如下模块。模块功能就是初始化时候加载零散/文件夹的物体代码如下#region 启动预加载模块 /// summary 预加载间隔分帧防卡顿 /summary private float _loadInterval 0.03f; /// summary 加载进度文本 /summary private Text _loadTxt; /// summary 当前加载进度 /summary private int _currentLoadCount; /// summary 总需要加载的资源数量 /summary private int _totalLoadCount; /// summary 启动预加载入口函数在Start/Awake中调用 /summary public void StartPreload() { _loadTxt transform.Find(loadTxt).GetComponentText(); _currentLoadCount 0; // 初始化【单个预制体路径】列表 Liststring preloadPaths new Liststring(); preloadPaths.Add($KKK); // 初始化【文件夹路径】列表 Liststring folderPaths new Liststring { }; folderPaths.Add(Prefabs/XXX); // 统计总预加载数量 _totalLoadCount preloadPaths.Count; foreach (var folder in folderPaths) { var prefabs Resources.LoadAllGameObject(folder); _totalLoadCount prefabs.Length; } UpdateLoadText(); // 串行执行先加载单个路径完成后再加载文件夹 StartCoroutine(PreloadAllCoroutine(preloadPaths, folderPaths)); } /// summary 统一预加载协程串行单个路径 → 文件夹 /summary private IEnumerator PreloadAllCoroutine(Liststring preloadPaths, Liststring folderPaths) { Debug.Log($ 预加载启动 | 总资源数{_totalLoadCount} ); // 第一步加载零散预制体路径 yield return PreloadSinglePaths(preloadPaths); // 第二步加载文件夹内所有预制体 yield return PreloadFolders(folderPaths); // 全部加载完成 _loadTxt.text 资源加载完毕; Debug.Log( 所有资源预加载完成 ); //进入游戏 } /// summary 预加载单个路径列表 /summary private IEnumerator PreloadSinglePaths(Liststring paths) { foreach (string path in paths) { // 加载资源 GameObject prefab Resources.LoadGameObject(path); // 实例化触发初始化 GameObject obj Instantiate(prefab); obj.SetActive(false); obj.hideFlags HideFlags.HideAndDontSave; yield return null; Destroy(obj); // 更新进度 _currentLoadCount; UpdateLoadText(); Debug.Log($预加载成功{path}); yield return new WaitForSeconds(_loadInterval); } } /// summary 预加载多个文件夹 /summary private IEnumerator PreloadFolders(Liststring folderPaths) { foreach (string folderPath in folderPaths) { // 加载文件夹下所有预制体 GameObject[] prefabs Resources.LoadAllGameObject(folderPath); foreach (GameObject prefab in prefabs) { bool loadSuccess false; GameObject tempObj null; // 实例化 try { tempObj Instantiate(prefab); tempObj.SetActive(false); tempObj.hideFlags HideFlags.HideAndDontSave; loadSuccess true; } catch (System.Exception e) { Debug.LogError($预加载失败 [{prefab.name}]{e.Message}); } // 初始化销毁 if (loadSuccess) { yield return null; Destroy(tempObj); Debug.Log($预加载成功{prefab.name}); } // 更新进度 _currentLoadCount; UpdateLoadText(); yield return new WaitForSeconds(_loadInterval); } } } /// summary 更新加载进度文本 /summary private void UpdateLoadText() { _loadTxt.text $资源加载进度 {_currentLoadCount}/{_totalLoadCount}; } #endregion文件夹部分可以根据需求自行处理。加载效果如下