在插件中编写了一个弹窗,编辑器重启后报错

//FYI: https://github.com/Tencent/pue ... al.md

import CSharp, { FairyEditor, FairyGUI } from 'csharp';

const App = FairyEditor.App;

interface ControllerInfo {
name: string;
itemList: string[];
}

let view: FairyGUI.GComponent;
let window: FairyGUI.Window;
let controllerList: ControllerInfo[] = [];
let selectedIndex: number = 0;
let pageList: FairyGUI.GList;
let comboBox: FairyGUI.GComboBox;

App.pluginManager.LoadUIPackage(App.pluginManager.basePath + "/" + eval("__dirname") + '/Builder');
view = FairyGUI.UIPackage.CreateObject('Builder', "ControllerEditDialog").asCom;
window = new FairyGUI.Window();
window.contentPane = view;
window.Center();
window.Hide();

view.GetChild("cancel").onClick.Add(() => {
window.Hide();
});

view.GetChild("save").onClick.Add(() => {
window.Hide();
console.warn("start ...");
// let xmlPath = App.activeDoc.packageItem.owner.basePath + "\\" + App.activeDoc.packageItem.name + ".xml";
let xmlPath = App.activeDoc.packageItem.owner.basePath + App.activeDoc.packageItem.path.replace("/","\\") + App.activeDoc.packageItem.name + ".xml";
console.log("xmlpath:file://" + xmlPath);
let xmlContent = FairyEditor.XMLExtension.Load(xmlPath);
console.log("xmlContent: " + xmlContent);
let url = App.activeDoc.docURL;
if(xmlContent.name == "component") {
console.log("find component");
let controller:ControllerInfo = controllerList[selectedIndex];
let pagesStr = "";
for(let i=0;i<controller.itemList.length;i++) {
pagesStr += i + "," + controller.itemList[i] + ",";
}
let xmlString:string = `<controller name="${controller.name}" pages=${pagesStr.substring(0,pagesStr.length-1)} selected="0"/>`
console.log("xmlString: " + xmlString);
let xml = new FairyGUI.Utils.XML(xmlString);
xmlContent.AppendChild(xml);
App.docView.CloseDocument(App.activeDoc);
console.log("close doc");
CSharp.System.IO.File.WriteAllText(xmlPath, xmlContent.ToXMLString(true));
App.docView.OpenDocument(url, true);
}
});

let CsArray = CSharp.System.Array;
let stringArray = CsArray.CreateInstance(CSharp.System.Type.GetType("System.String"), 2);
stringArray.SetValue("areaController", 0);
stringArray.SetValue("langController", 1);
controllerList.push({name: "areaController",itemList: ["1", "2", "3", "4", "5"]});
controllerList.push({name: "langController",itemList: ["1", "2", "3", "4"]});

comboBox = view.GetChild("name").asComboBox;
comboBox.items = stringArray as CSharp.System.Array$1<string>;

pageList = view.GetChild("pageList").asList;
pageList.itemRenderer = (index: number, item: FairyGUI.GObject) => {
if(!controllerList || controllerList.length == 0) {
console.log("controllerList is empty");
return;
}
let itemList = controllerList[selectedIndex].itemList;
let pageItem = item.asCom;

let indexText = pageItem.GetChild("index").asTextField;
let nameInput = pageItem.GetChild("name").asCom;
indexText.text = index.toString();
nameInput.GetChild("title").asTextField.text = itemList[index];
};

pageList.numItems = controllerList[selectedIndex].itemList.length;

comboBox.onChanged.Add(() => {
selectedIndex = comboBox.selectedIndex;
pageList.numItems = controllerList[selectedIndex].itemList.length;
});


let menu = App.menu.GetSubMenu("tool");
menu.AddItem("controller", "LocalizationController", () => {
console.log("LocalizationController");
window.Show()
});

function onDestroy() {
//do cleanup here
view.Dispose();
window.Dispose();

menu.RemoveItem("LocalizationController");
}

export { onDestroy }
PixPin_2024-02-23_16-53-54.png
已邀请:

sd1840888

赞同来自:

打日志跟一下不就定位到了

谷主

赞同来自:

感觉是你构造的xml有问题

要回复问题请先登录注册