private void BuildPackageTree_lostItems(Configs.UserConfig.JsonClass.Package package, PackageTreeItem p) { //遍历bundles数组添加所有丢失的bundle foreach (string bundlePath in package.Bundles) { string[] folderNames = bundlePath.Split('/'); //路径字符串中必须全部为/ 不能有\ PackageTreeItem parent = p; string relativePath = ""; int i; for (i = 0; i < folderNames.Length - 1; i++) { relativePath += folderNames[i]; parent = FindOrCreateFolderItemByFolderName(parent, folderNames[i], relativePath); relativePath += "/"; } string bundleName = Path.GetFileNameWithoutExtension(folderNames[i]); relativePath += bundleName; FindOrCreateBundleItemByBundleName(parent, bundleName, relativePath); } //遍历所有空文件夹数组添加丢失的空文件夹 foreach (string folderPath in package.EmptyFolders) { string[] folderNames = folderPath.Split('/'); PackageTreeItem parent = p; string relativePath = ""; int i; for (i = 0; i < folderNames.Length; i++) { relativePath += folderNames[i]; parent = FindOrCreateFolderItemByFolderName(parent, folderNames[i], relativePath); relativePath += "/"; } } }
//由于PackageMapConfig不会随Package的修改而更新,所以必须由此函数获取package信息 public List <Configs.UserConfig.JsonClass.Package> GetPackageMap() { var packages = new List <Configs.UserConfig.JsonClass.Package>(); foreach (var package in G.g.packageTree.Packages) { var p = new Configs.UserConfig.JsonClass.Package() { Bundles = new List <string>(), EmptyFolders = new List <string>(), PackageName = package.displayName, Color = ColorUtility.ToHtmlStringRGB(package.packageColor), CopyToStreaming = package.copyToStreaming, DeploymentLocation = package.deploymentLocation, Necessery = package.necessery, }; if (package.hasChildren) { foreach (PackageTreeItem packageItem in package.children) { RecursiveAddItem(packageItem, p); } } packages.Add(p); } return(packages); }
private void BuildPackageTreeFromBundleTree(Configs.UserConfig.JsonClass.Package package, PackageTreeItem p) { foreach (string bundlePath in package.Bundles) { if (G.g.bundleTree.bundleDic.ContainsKey(bundlePath)) { RecursiveAddParents(G.g.bundleTree.bundleDic[bundlePath], p); } } foreach (string emptyFolderPath in package.EmptyFolders) { if (G.g.bundleTree.folderDic.ContainsKey(emptyFolderPath)) { RecursiveAddParents(G.g.bundleTree.folderDic[emptyFolderPath], p); } } }
private void RecursiveAddItem(PackageTreeItem packageItem, Configs.UserConfig.JsonClass.Package package) { if (packageItem.hasChildren) { foreach (PackageTreeItem item in packageItem.children) { RecursiveAddItem(item, package); } } else { if (!packageItem.bundleItem.isFolder) { package.Bundles.Add(packageItem.bundleItem.relativePath); } else { package.EmptyFolders.Add(packageItem.bundleItem.relativePath); } } }