下载
本地: 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"));
}
}
}