// 替换图片引用 public void ReplaceImage(AssetData item, AssetData main) { //XmlNodeList xnList = xmlDocument.SelectNodes("/component/displayList/image[@src='" + item.id + "']"); //foreach (XmlElement xn in xnList) //{ // xn.SetAttribute("src", main.id); // xn.SetAttribute("pkg", main.package.id); // xn.SetAttribute("fileName", main.fileNameForPackage); //} //xnList = xmlDocument.SelectNodes("/component/displayList/loader[@url='" + item.URL + "']"); //foreach (XmlElement xn in xnList) //{ // xn.SetAttribute("url", main.URL); //} //xnList = xmlDocument.SelectNodes("/component/displayList/component/Label[@icon='" + item.URL + "']"); //foreach (XmlElement xn in xnList) //{ // xn.SetAttribute("icon", main.URL); //} //xnList = xmlDocument.SelectNodes("/component/displayList/component/Button[@icon='" + item.URL + "']"); //foreach (XmlElement xn in xnList) //{ // xn.SetAttribute("icon", main.URL); //} //xnList = xmlDocument.SelectNodes("/component/displayList/component/Button[@selectedIcon='" + item.URL + "']"); //foreach (XmlElement xn in xnList) //{ // xn.SetAttribute("selectedIcon", main.URL); //} //xmlDocument.Save(pathForFull); ReplaceImage(item.URL, main.URL, item.id, main.id, item.package.id, main.package.id, item.fileNameForPackage, main.fileNameForPackage ); }
public void SetImageExport(AssetData assetData, bool export) { XmlNodeList xnList = xmlDocument.SelectNodes("/packageDescription/resources/image[@id='" + assetData.id + "']"); foreach (XmlElement xn in xnList) { if (export) { xn.SetAttribute("exported", "true"); } else if (xn.HasAttribute("exported")) { xn.RemoveAttribute("exported"); } } assetData.exported = export; xmlDocument.Save(pathForFull); }
private void DrawUseItem(int index, AssetData file) { int width = 100; int height = 25; EditorGUILayout.BeginHorizontal(HStyle.boxTableHeadStyle); if (GUILayout.Button("依赖详情", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { FguiRefDetailsEditorWindow.Open(file); } if (GUILayout.Button("选中", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { Shell.ShowInExplorer(file.pathForFull); //Selection.activeObject = AssetDatabase.LoadAssetAtPath<UnityEngine.Object>(file.pathForAssets); } bool export = GUILayout.Toggle(file.exported, "是否导出", GUILayout.Width(100), GUILayout.Height(height)); if (export != file.exported) { file.package.SetImageExport(file, export); } GUILayout.Space(10); GUILayout.Label(index.ToString(), HStyle.labelMiddleCenterStyle, GUILayout.Width(width), GUILayout.Height(height)); GUILayout.Space(10); GUILayout.Label(file.beDependCount + "", HStyle.labelMiddleCenterStyle, GUILayout.Width(width), GUILayout.Height(height)); GUILayout.Space(10); GUILayout.Label(file.pathForAssets, GUILayout.Height(height)); GUILayout.Space(10); EditorGUILayout.EndHorizontal(); }
private void DrawUseItem(int index, AssetData file) { int width = 100; int height = 25; EditorGUILayout.BeginHorizontal(HStyle.boxTableHeadStyle); if (GUILayout.Button("选中", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { } GUILayout.Space(10); GUILayout.Label(index.ToString(), HStyle.labelMiddleCenterStyle, GUILayout.Width(width), GUILayout.Height(height)); GUILayout.Space(10); GUILayout.Label(file.pathForAssets, GUILayout.Height(height)); GUILayout.Space(10); EditorGUILayout.EndHorizontal(); }
private void DrawItem(int index, List <AssetData> md5files) { int width = 100; int height = 25; EditorGUILayout.BeginHorizontal(HStyle.boxTableHeadStyle); GUILayout.Label(index.ToString(), HStyle.labelMiddleCenterStyle, GUILayout.Width(width), GUILayout.Height(height)); if (isSetDict.ContainsKey(index) && isSetDict[index]) { GUILayout.Label("已设置", GUILayout.Width(60), GUILayout.Height(height)); } EditorGUILayout.BeginVertical(); for (int i = 0; i < md5files.Count; i++) { EditorGUILayout.BeginHorizontal(); AssetData file = md5files[i]; if (GUILayout.Button("选中", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { Selection.activeObject = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(file.path); } if (GUILayout.Button("设为主资源", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { SetMainRes(index, md5files, file); } if (GUILayout.Button("移至 Common", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { file.MoveToCommon(); } if (GUILayout.Button("引用详情", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { FguiRefDetailsEditorWindow.Open(file); } if (GUILayout.Button("打开 Common", HStyle.boxMiddleCenterStyle, GUILayout.Width(100), GUILayout.Height(height))) { file.ShowInExplorerForCommon(); } bool export = GUILayout.Toggle(file.exported, "是否导出", GUILayout.Width(100), GUILayout.Height(height)); if (export != file.exported) { file.package.SetImageExport(file, export); } GUILayout.Space(10); GUILayout.Label(file.beDependCount.ToString(), GUILayout.Width(width), GUILayout.Height(height)); GUILayout.Space(10); GUILayout.Label(file.pathForAssets, GUILayout.Height(height)); EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); }
private void SetComponentNode() { foreach (Package package in packageList) { foreach (AssetData component in package.resourcesList) { foreach (Node node in component.assetDisplayList) { node.assetData = GetRescoureComponent(node); if (node.assetData == null) { UnityEngine.Debug.LogWarningFormat("没有找到 resourceComponent packagename= {0} comname= {1} nodename={2}", node.parent.package.name, node.parent.name, node.name); } else { // 添加被依赖 node.assetData.beDependList.Add(component); if (component.exported) { node.assetData.hasBeDependForExtported = true; } if (node.type == fairygui.CommonName.GComponent) { if (!string.IsNullOrEmpty(node.labelIcon)) { node.labelIconAssetData = GetAssetDataByUrl(node.labelIcon); if (node.labelIconAssetData != null) { node.labelIconAssetData.beDependList.Add(component); } } if (!string.IsNullOrEmpty(node.buttonIcon)) { node.buttonIconAssetData = GetAssetDataByUrl(node.buttonIcon); if (node.buttonIconAssetData != null) { node.buttonIconAssetData.beDependList.Add(component); } } if (!string.IsNullOrEmpty(node.buttonSelectIcon)) { node.buttonSelectIconAssetData = GetAssetDataByUrl(node.buttonSelectIcon); if (node.buttonSelectIconAssetData != null) { node.buttonSelectIconAssetData.beDependList.Add(component); } } } // 控制器中依赖的资源 if (!string.IsNullOrEmpty(node.gearIconUrls)) { node.gearIconAssetDatas = GetAssetDataForGearIcon(node.gearIconUrls); if (node.gearIconAssetDatas != null) { for (int ii = 0; ii < node.gearIconAssetDatas.Count; ii++) { AssetData gearIcon = node.gearIconAssetDatas[ii]; if (gearIcon != null) { gearIcon.beDependList.Add(component); } } } } if (!string.IsNullOrEmpty(node.gearDefault)) { node.gearDefaultAssetData = GetAssetDataByUrl(node.gearDefault); if (node.gearDefaultAssetData != null) { node.gearDefaultAssetData.beDependList.Add(component); } } } } } } int i = 0; int count = packageList.Count; // 生成依赖的包列表 foreach (Package package in packageList) { if (i % 10 == 0) { EditorUtility.DisplayProgressBar("生成依赖的包列表", package.folderName, i * 1f / count); } i++; foreach (AssetData component in package.resourcesList) { component.AddDependPackage(package); TraverseDependPackage(component, component); foreach (Node node in component.displayList) { if (node.pkg != null) { Package pkg = GetPackage(node.pkg); if (pkg != null) { component.AddDependPackage(pkg); } } } } } EditorUtility.ClearProgressBar(); }
private void DrawNuseItemTool(List <AssetData> list) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("全选", GUILayout.Width(100), GUILayout.Height(30))) { for (int i = 0; i < list.Count; i++) { list[i].isSelected = true; } } if (GUILayout.Button("反选", GUILayout.Width(100), GUILayout.Height(30))) { for (int i = 0; i < list.Count; i++) { list[i].isSelected = !list[i].isSelected; } } if (GUILayout.Button("删除选中的", GUILayout.Width(100), GUILayout.Height(30))) { for (int i = 0; i < list.Count; i++) { AssetData file = list[i]; if (file.isSelected) { file.package.RemoveImageXml(file); file.package.RemoveResource(file); if (File.Exists(file.pathForFull)) { File.Delete(file.pathForFull); } } } //AssetDatabase.Refresh(); } if (GUILayout.Button("删除选中 不包含设置导出的", GUILayout.Width(100), GUILayout.Height(30))) { for (int i = 0; i < list.Count; i++) { AssetData file = list[i]; if (file.isSelected && !file.exported) { file.package.RemoveImageXml(file); file.package.RemoveResource(file); if (File.Exists(file.pathForFull)) { File.Delete(file.pathForFull); } } } //AssetDatabase.Refresh(); } EditorGUILayout.EndHorizontal(); }
public static Package Load(string path) { Console.WriteLine("PackageReader:" + path); Package package = new Package(); package.rootPath = Path.GetDirectoryName(path); package.folderName = Path.GetFileName(package.rootPath); package.pathForFull = path; XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(path); package.xmlDocument = xmlDocument; XmlNode packageDescription = xmlDocument.SelectSingleNode(@"packageDescription"); XmlNode publish = xmlDocument.SelectSingleNode(@"packageDescription/publish"); package.genCode = false; package.id = packageDescription.Attributes.GetNamedItem("id").InnerText; if (publish != null) { package.name = publish.Attributes.GetNamedItem("name").InnerText; if (publish.Attributes["genCode"] != null) { package.genCode = publish.Attributes.GetNamedItem("genCode").InnerText == "true"; } } else { package.name = Path.GetFileNameWithoutExtension(Path.GetDirectoryName(path)); } XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("packageDescription/resources").ChildNodes; foreach (XmlNode node in xmlNodeList) { bool exported = false; if (node.Attributes["exported"] != null) { exported = node.Attributes.GetNamedItem("exported").InnerText == "true"; } AssetData item = new AssetData() { id = node.Attributes.GetNamedItem("id").InnerText, name = node.Attributes.GetNamedItem("name").InnerText, path = node.Attributes.GetNamedItem("path").InnerText, exported = exported, type = node.Name.GetResourceComponentTypeByName() }; item.pathForPackage = item.path + item.name; item.fileNameForPackage = item.pathForPackage.Substring(1, item.pathForPackage.Length - 1); item.pathForAssets = "assets/" + package.folderName + item.path + item.name; item.pathForAssetsData = package.folderName + item.path + item.name; item.pathForFull = package.rootPath + item.path + item.name; if (File.Exists(item.pathForFull)) { package.AddResource(item); } } return(package); }
public static void Load(string path, AssetData resourceComponent) { Console.WriteLine("ComponentReader:" + path); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(path); resourceComponent.xmlDocument = xmlDocument; XmlNode component = xmlDocument.SelectSingleNode(@"component"); // 继承 string extention = fairygui.ExtendType.Component; if (component.Attributes["extention"] != null) { extention = component.Attributes.GetNamedItem("extention").InnerText; } resourceComponent.extention = extention; XmlNodeList xmlNodeList = component.ChildNodes; foreach (XmlNode node in xmlNodeList) { switch (node.Name) { // 控制器 case fairygui.NodeName.controller: resourceComponent.controllerList.Add(new Node() { name = node.Attributes.GetNamedItem("name").InnerText, type = fairygui.CommonName.Controller }); break; // 动效 case fairygui.NodeName.transition: resourceComponent.transitionList.Add(new Node() { name = node.Attributes.GetNamedItem("name").InnerText, type = fairygui.CommonName.Transition }); break; case fairygui.NodeName.displayList: XmlNodeList displayNodeList = node.ChildNodes; foreach (XmlNode displayNode in displayNodeList) { Node fguiNode = null; string pkg = null; string src = null; string nodeName = displayNode.Attributes.GetNamedItem("name").InnerText; switch (displayNode.Name) { // 图片 case fairygui.NodeName.image: pkg = null; if (displayNode.Attributes["pkg"] != null) { pkg = displayNode.Attributes.GetNamedItem("pkg").InnerText; } src = null; if (displayNode.Attributes["src"] != null) { src = displayNode.Attributes.GetNamedItem("src").InnerText; } fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GImage, pkg = pkg, src = src }; resourceComponent.AddNode(fguiNode); break; // 文本 case fairygui.NodeName.text: bool input = false; if (displayNode.Attributes["input"] != null) { input = displayNode.Attributes.GetNamedItem("input").InnerText == "true"; } if (input) { fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GTextInput }; } else { fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GTextField }; } resourceComponent.AddNode(fguiNode); break; // 富文本 case fairygui.NodeName.richtext: fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GRichTextField }; resourceComponent.AddNode(fguiNode); break; // 图形 case fairygui.NodeName.graph: fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GGraph }; resourceComponent.AddNode(fguiNode); break; // 组 case fairygui.NodeName.group: bool advanced = false; if (displayNode.Attributes["advanced"] != null) { advanced = displayNode.Attributes.GetNamedItem("advanced").InnerText == "true"; } if (advanced) { fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GGroup }; resourceComponent.AddNode(fguiNode); } break; // 装载器 case fairygui.NodeName.loader: string url = null; if (displayNode.Attributes["url"] != null) { url = displayNode.Attributes.GetNamedItem("url").InnerText; } fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GLoader, url = url }; resourceComponent.AddNode(fguiNode); break; // 列表 case fairygui.NodeName.list: string defaultItem = null; if (displayNode.Attributes["defaultItem"] != null) { defaultItem = displayNode.Attributes.GetNamedItem("defaultItem").InnerText; } fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GList, defaultItem = defaultItem }; resourceComponent.AddNode(fguiNode); break; // 序列帧动画 case fairygui.NodeName.movieclip: pkg = null; if (displayNode.Attributes["pkg"] != null) { pkg = displayNode.Attributes.GetNamedItem("pkg").InnerText; } src = null; if (displayNode.Attributes["src"] != null) { src = displayNode.Attributes.GetNamedItem("src").InnerText; } fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GMovieClip, pkg = pkg, src = src }; resourceComponent.AddNode(fguiNode); break; // 自定义组件 case fairygui.NodeName.component: pkg = null; if (displayNode.Attributes["pkg"] != null) { pkg = displayNode.Attributes.GetNamedItem("pkg").InnerText; } fguiNode = new Node() { name = nodeName, type = fairygui.CommonName.GComponent, pkg = pkg, src = displayNode.Attributes.GetNamedItem("src").InnerText }; XmlElement label = (XmlElement)displayNode.SelectSingleNode("Label"); if (label != null) { if (label.HasAttribute("icon")) { fguiNode.labelIcon = label.GetAttribute("icon"); } } XmlElement button = (XmlElement)displayNode.SelectSingleNode("Button"); if (button != null) { if (button.HasAttribute("icon")) { fguiNode.buttonIcon = button.GetAttribute("icon"); } if (button.HasAttribute("selectedIcon")) { fguiNode.buttonSelectIcon = button.GetAttribute("selectedIcon"); } } resourceComponent.AddNode(fguiNode); break; } if (fguiNode != null) { XmlElement gearIcon = (XmlElement)displayNode.SelectSingleNode("gearIcon"); if (gearIcon != null) { if (gearIcon.HasAttribute("values")) { fguiNode.gearIconUrls = gearIcon.GetAttribute("values"); } if (gearIcon.HasAttribute("default")) { fguiNode.gearDefault = gearIcon.GetAttribute("default"); } } } } break; } } }