下载
本地: ihaiu.ExportFairyGUICodeDemo.zip
Github: https://github.com/ihaiucom/ihaiu.ExportFairyGUICode
安装net core
如果安装过net core, 可以跳过该步骤
下载地址:https://www.microsoft.com/net/download/windows
根据自己电脑情况选择对应版本即可, 我这里安装的这个: https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.300-windows-x64-installer
测试Demo
双击: FairyGUI/Tools/生成FGUI代码.bat
可以看到生成了目录
2个工具
在Tools目录下可以看到两个文件夹
ExportFairyGUICode: 负责生成FGUI 代码 Copy: 负责将生成的文件拷贝到项目目录
Export.bat
dotnet ./ExportFairyGUICode/ExportFairyGUICode.dll --optionSetting=./ExportSetting.json
可以看出他需要指定一个启动配置文件ExportSetting.json, 该文件配置了(xlsx文件目录, 生成输出目录)等,后面我们会详细介绍
CopyClient.bat
dotnet ./Copy/Copy.dll --setting=./CopyClientSetting.json
可以看出他需要指定一个启动配置文件CopyClientSetting.json, 该文件配置了要拷贝的文件,后面我们会详细介绍
生成FGUI代码.bat
dotnet ./ExportFairyGUICode/ExportFairyGUICode.dll --optionSetting=./ExportSetting.json dotnet ./Copy/Copy.dll --setting=./CopyClientSetting.json
是将Export.bat和CopyClient.bat合并, 变成一键生成
Export.json 介绍
字段名 | 介绍 | 默认值 |
autoEnd | 运行完,是否自动关闭cmd | true |
optionSetting | 启动参数设置 配置路径 | ./optionSetting.json |
fairyProject | FairyGUI项目目录 | ../../ |
templateDir | 生成代码模板 | ./ExportFairyGUICode/Template |
codePath | 代码输出目录 | ./FairyGUICode |
codeNamespace | 代码的命名空间 | fgui |
codeMemberNamePrefix | 代码的成员变量前缀 | m_ |
codeIgnoreNoname | 是否忽略nxxx的变量 | true |
codeIgnorIllegalClassName | 是否忽略非法类名的组件 | false |
codeIgnorNoExported | 忽略没设置导出的组件 | true |
codeExportDepend | 导出依赖的组件 | true |
codeUseOtherPkgType | 成员变量类型是否可以用其他包组件的类名 | true |
CopyClientSetting.json 介绍
{ // 可覆盖列表 "enableoverwrites": [ { "src":"./FairyGUICode/TS/Generates", "dst":"./FairyGUICode2/fgui/Generates" } ], // 目标目录没有该文件才复制 "disableoverwrites": [ { "src":"./FairyGUICode/TS/Extends", "dst":"./FairyGUICode2/fgui/Extends" } ] }
enableoverwrites: 可覆盖文件 disableoverwrites: 如果目标文件已存在,将忽略
// 支持文件和目录 src: 源路径 dst: 目标路径
生成的代码
TS/Generates: 和原生的生成代码类似
TS/Extends: 生成对应的扩展类,不会被覆盖,你可以再这里扩展你的逻辑
///////////////////////////////////// // ihaiu.ExportFairyGUICode生成 // http://blog.ihaiu.com ///////////////////////////////////// namespace fgui.BlackSkin { export class Button extends ButtonStruct { // 你可以再这里扩展你的逻辑,不会被覆盖 } }
///////////////////////////////////// // ihaiu.ExportFairyGUICode生成 // http://blog.ihaiu.com ///////////////////////////////////// namespace fgui.BlackSkin { export class ButtonStruct extends fairygui.GButton { public m_button : fairygui.Controller; public m_grayed : fairygui.Controller; public m_title : fairygui.GTextField; public static URL:string = "uiL://s1uxc7tgjmop0"; public constructor() { super(); } protected constructFromXML(xml: any): void { super.constructFromXML(xml); this.m_button = this.getController("button"); this.m_grayed = this.getController("grayed"); this.m_title = <fairygui.GTextField><any>(this.getChild("title")); } } }