private static void PackAllPrefab(List <AssetBundleBuild> packBundles) { // 不用文件流读取, 因为文件流读取的路径在最终文件上一级会出现 \ 反斜杠, 采用读取 GUID 保证文件唯一性 string[] assetGUIDs = AssetDatabase.FindAssets("t:Prefab", new string[] { EditorPathConfig.PrefabPath }); if (assetGUIDs == null || assetGUIDs.Length <= 0) { return; } Dictionary <string, List <string> > dicUIBundle = null; foreach (string guid in assetGUIDs) { string assetPath = AssetDatabase.GUIDToAssetPath(guid); string assetBundleName = assetPath.Replace(EditorPathConfig.AssetRemovePath, string.Empty); if (assetBundleName.Contains(EditorConst.MoudleString) && assetBundleName.Contains(EditorConst.UIString)) { int startIndex = assetBundleName.IndexOf(EditorConst.UIString); assetBundleName = assetBundleName.Remove(startIndex + EditorConst.UIStringLength); if (dicUIBundle == null) { dicUIBundle = new Dictionary <string, List <string> >(); } if (!dicUIBundle.ContainsKey(assetBundleName)) { dicUIBundle.Add(assetBundleName, new List <string>()); } dicUIBundle[assetBundleName].Add(assetPath); continue; } assetBundleName = StringTool.RemoveExtension(assetBundleName); AssetBundleBuild bundleData = new AssetBundleBuild(); bundleData.assetBundleName = assetBundleName; bundleData.assetNames = new string[] { assetPath }; packBundles.Add(bundleData); } if (dicUIBundle == null) { return; } foreach (KeyValuePair <string, List <string> > bundleNameResList in dicUIBundle) { AssetBundleBuild bundleData = new AssetBundleBuild(); bundleData.assetBundleName = bundleNameResList.Key; bundleData.assetNames = bundleNameResList.Value.ToArray(); packBundles.Add(bundleData); } }