效果:
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
using ETModel;
using FairyGUI;
namespace ETHotfix.Main
{
[ObjectSystem]
public class UI_SettingAwakeSystem : AwakeSystem<UI_Setting, GObject> {
public override void Awake(UI_Setting self, GObject go) {
self.Awake(go);
}
}
public partial class UI_Setting : FUI {
public const string UIPackageName = "Main";
public const string UIResName = "Setting";
public const string UIName = "Main.Setting";
public GComponent self;
public GButton m_toLogin;
public GButton m_closeBtn;
public GSlider m_soundSlider;
public GSlider m_musicSlider;
public GButton m_sound;
public GButton m_music;
public static string URL = "ui://yzjk0ph4nil";
public void Awake(GObject go) {
if (go == null) {
return;
}
GObject = go;
Name = UIName;
self = (GComponent)go;
self.Add(this);
var com = go.asCom;
if (com != null) {
this.m_toLogin = (GButton)com.GetChild("toLogin");
this.m_closeBtn = (GButton)com.GetChild("closeBtn");
this.m_soundSlider = (GSlider)com.GetChild("soundSlider");
this.m_musicSlider = (GSlider)com.GetChild("musicSlider");
this.m_sound = (GButton)com.GetChild("sound");
this.m_music = (GButton)com.GetChild("music");
OnInitialization();
}
}
partial void OnInitialization();
public override void Dispose() {
base.Dispose();
self.Remove();
}
}
}
namespace ETHotfix {
public partial class FGUIGenerate {
public static async ETVoid Create_Main_Setting() {
await FGUIHelper.Add<Main.UI_Setting>(Main.UI_Setting.UIPackageName, Main.UI_Setting.UIResName);
}
}
}
模板:
function onPublish(handler)
--fprint("Handling gen code in plugin")
if not handler.genCode then return end
handler.genCode = false --prevent default output
fprint("Handling gen code in plugin")
genCode(handler) --do it myself
end
-- this is copied from Editor-Install-Path/Resources/Data/StreamingAssets/Scripts
function genCode(handler)
local settings = handler.project:GetSettings("Publish").codeGeneration
local codePkgName = handler:ToFilename(handler.pkg.name); --convert chinese to pinyin, remove special chars etc.
local exportCodePath = handler.exportCodePath..'/'..codePkgName
local namespaceName = codePkgName
local ns = 'fgui'
if settings.packageName~=nil and settings.packageName~='' then
namespaceName = settings.packageName..'.'..namespaceName;
end
--CollectClasses(stripeMemeber, stripeClass, fguiNamespace)
local classes = handler:CollectClasses(settings.ignoreNoname, settings.ignoreNoname, ns)
handler:SetupCodeFolder(exportCodePath, "ts") --check if target folder exists, and delete old files
local getMemberByName = settings.getMemberByName
local classCnt = classes.Count
local writer = CodeWriter.new({ blockFromNewLine=false, usingTabs = true })
for i=0,classCnt-1 do
local classInfo = classes[i]
local members = classInfo.members
local references = classInfo.references
writer:reset()
local refCount = references.Count
if refCount>0 then
for j=0,refCount-1 do
local ref = references[j]
writer:writeln('import %s from "./%s";', ref, ref)
end
writer:writeln()
end
writer:writeln('using ETModel;')
writer:writeln('using FairyGUI;')
writer:writeln()
writer:writeln('namespace ETHotfix.%s',namespaceName)
writer:writeln()
writer:startBlock()
writer:writeln()
writer:writeln('[ObjectSystem]')
writer:writeln('public class %sAwakeSystem : AwakeSystem<%s, GObject>',classInfo.className,classInfo.className)
writer:startBlock()
writer:writeln()
writer:writeln('public override void Awake(%s self, GObject go)',classInfo.className)
writer:startBlock()
writer:writeln('self.Awake(go);')
writer:endBlock()
writer:endBlock()
writer:writeln()
writer:writeln('public partial class %s : %s', classInfo.className, 'FUI')
writer:startBlock()
writer:writeln('public const string UIPackageName = "%s";', handler.pkg.name)
writer:writeln('public const string UIResName = "%s";', classInfo.resName)
writer:writeln('public const string UIName = "%s.%s";', handler.pkg.name,classInfo.resName)
writer:writeln('public GComponent self;', classInfo.resName)
writer:writeln()
local memberCnt = members.Count
for j=0,memberCnt-1 do
local memberInfo = members[j]
writer:writeln('public %s %s;', string.gsub(memberInfo.type,'fgui.',''),memberInfo.varName)
end
writer:writeln('public static string URL = "ui://%s%s";', handler.pkg.id, classInfo.classId)
writer:writeln()
writer:writeln('public void Awake(GObject go)')
writer:startBlock()
writer:writeln('if (go == null)')
writer:startBlock()
writer:writeln('return;')
writer:endBlock()
writer:writeln('GObject = go;')
writer:writeln('Name = UIName;')
writer:writeln('self = (GComponent)go;')
writer:writeln('self.Add(this);')
writer:writeln('var com = go.asCom;')
writer:writeln('if (com != null)')
writer:startBlock()
for j=0,memberCnt-1 do
local memberInfo = members[j]
if memberInfo.group==0 then
if getMemberByName then
writer:writeln('this.%s = (%s)com.GetChild("%s");', memberInfo.varName, string.gsub(memberInfo.type,'fgui.',''), memberInfo.name)
else
writer:writeln('this.%s = (%s)com.GetChildAt(%s);', memberInfo.varName, string.gsub(memberInfo.type,'fgui.',''), memberInfo.index)
end
elseif memberInfo.group==1 then
if getMemberByName then
writer:writeln('this.%s = com.GetController("%s");', memberInfo.varName, memberInfo.name)
else
writer:writeln('this.%s = com.GetControllerAt(%s);', memberInfo.varName, memberInfo.index)
end
else
if getMemberByName then
writer:writeln('this.%s = com.GetTransition("%s");', memberInfo.varName, memberInfo.name)
else
writer:writeln('this.%s = com.GetTransitionAt(%s);', memberInfo.varName, memberInfo.index)
end
end
end
writer:writeln('OnInitialization();')
writer:endBlock()
writer:endBlock()
writer:writeln()
writer:writeln('partial void OnInitialization();')
writer:writeln()
writer:writeln('public override void Dispose()')
writer:startBlock()
writer:writeln('base.Dispose();')
writer:writeln('self.Remove();')
writer:endBlock()
writer:endBlock() --class
writer:endBlock()
writer:writeln('namespace ETHotfix')
writer:startBlock()
writer:writeln('public partial class FGUIGenerate')
writer:startBlock()
writer:writeln('public static async ETVoid Create_%s_%s()',handler.pkg.name,classInfo.resName)
writer:startBlock()
local tmp = namespaceName..'.'..classInfo.className;
writer:writeln('await FGUIHelper.Add<%s>(%s.UIPackageName, %s.UIResName);',tmp,tmp,tmp)
writer:endBlock()
writer:endBlock()
writer:endBlock()
writer:save(exportCodePath..'/'..classInfo.className..'.cs')
end
end