当前位置:   article > 正文

FairyGUI 代码生成插件_fairygui自动生成代码

fairygui自动生成代码

 

 

生成的代码

  1. /** This is an automatically generated class by FairyGUI. Please do not modify it. **/
  2. using FairyGUI;
  3. namespace ETModel
  4. {
  5. [ObjectSystem]
  6. public class UI_CanteraComponentAwakeSystem : AwakeSystem<UI_CanteraComponent, GObject> {
  7. public override void Awake(UI_CanteraComponent self, GObject go) {
  8. self.Awake(go);
  9. }
  10. }
  11. public partial class UI_CanteraComponent : FUI {
  12. public const string UIPackageName = "ComponentPackage";
  13. public const string UIResName = "CanteraComponent";
  14. public const string UIName = "ComponentPackage.CanteraComponent";
  15. public GComponent self;
  16. public GButton m_closeBtn;
  17. public GButton m_settingBtn;
  18. public GLoader m_icon;
  19. public GTextField m_describe;
  20. public GList m_powerStarList;
  21. public GList m_timeStarList;
  22. public GButton m_leftBtn;
  23. public GButton m_rightBtn;
  24. public GProgressBar m_power;
  25. public GProgressBar m_time;
  26. public void Awake(GObject go) {
  27. if (go == null) {
  28. return;
  29. }
  30. GObject = go;
  31. Name = UIName;
  32. self = (GComponent)go;
  33. self.Add(this);
  34. var com = go.asCom;
  35. if (com != null) {
  36. this.m_closeBtn = (GButton)com.GetChildAt(4);
  37. this.m_settingBtn = (GButton)com.GetChildAt(5);
  38. this.m_icon = (GLoader)com.GetChildAt(6);
  39. this.m_describe = (GTextField)com.GetChildAt(7);
  40. this.m_powerStarList = (GList)com.GetChildAt(10);
  41. this.m_timeStarList = (GList)com.GetChildAt(11);
  42. this.m_leftBtn = (GButton)com.GetChildAt(12);
  43. this.m_rightBtn = (GButton)com.GetChildAt(13);
  44. this.m_power = (GProgressBar)com.GetChildAt(16);
  45. this.m_time = (GProgressBar)com.GetChildAt(17);
  46. OnInitialization();
  47. }
  48. }
  49. partial void OnInitialization();
  50. public override void Dispose() {
  51. base.Dispose();
  52. self.Remove();
  53. self = null;
  54. m_closeBtn = null;
  55. m_settingBtn = null;
  56. m_icon = null;
  57. m_describe = null;
  58. m_powerStarList = null;
  59. m_timeStarList = null;
  60. m_leftBtn = null;
  61. m_rightBtn = null;
  62. m_power = null;
  63. m_time = null;
  64. }
  65. }
  66. }

 

  1. --region LuaCodeWriter
  2. local LuaCodeWriter = fclass()
  3. function LuaCodeWriter:ctor(config)
  4. config = config or {}
  5. self.blockStart = config.blockStart or '{'
  6. self.blockEnd = config.blockEnd or '}'
  7. self.blockFromNewLine = config.blockFromNewLine
  8. if self.blockFromNewLine == nil then
  9. self.blockFromNewLine = true
  10. end
  11. if config.usingTabs then
  12. self.indentStr = '\t'
  13. else
  14. self.indentStr = ' '
  15. end
  16. self.usingTabs = config.usingTabs
  17. self.endOfLine = config.endOfLine or '\n'
  18. self.lines = {}
  19. self.indent = 0
  20. self:writeMark()
  21. end
  22. function LuaCodeWriter:writeMark()
  23. table.insert(self.lines, '--- This is an automatically generated class by FairyGUI. Please do not modify it. ---')
  24. table.insert(self.lines, '')
  25. end
  26. function LuaCodeWriter:writeln(format, ...)
  27. if not format then
  28. table.insert(self.lines, '')
  29. return
  30. end
  31. local str = ''
  32. for i = 0, self.indent - 1 do
  33. str = str .. self.indentStr
  34. end
  35. str = str .. string.format(format, ...)
  36. table.insert(self.lines, str)
  37. return self
  38. end
  39. function LuaCodeWriter:startBlock()
  40. if self.blockFromNewLine or #self.lines == 0 then
  41. self:writeln(self.blockStart)
  42. else
  43. local str = self.lines[#self.lines]
  44. self.lines[#self.lines] = str .. ' ' .. self.blockStart
  45. end
  46. self.indent = self.indent + 1
  47. return self
  48. end
  49. function LuaCodeWriter:endBlock()
  50. self.indent = self.indent - 1
  51. self:writeln(self.blockEnd)
  52. return self
  53. end
  54. function LuaCodeWriter:incIndent()
  55. self.indent = self.indent + 1
  56. return self
  57. end
  58. function LuaCodeWriter:decIndent()
  59. self.indent = self.indent - 1
  60. return self
  61. end
  62. function LuaCodeWriter:reset()
  63. if #self.lines > 0 then
  64. self.lines = {}
  65. end
  66. self.indent = 0
  67. self:writeMark()
  68. end
  69. function LuaCodeWriter:tostring()
  70. return table.concat(self.lines, self.endOfLine)
  71. end
  72. function LuaCodeWriter:save(filePath)
  73. local str = table.concat(self.lines, self.endOfLine)
  74. CS.System.IO.File.WriteAllText(filePath, str)
  75. end
  76. --endregion
  77. local projectCustomPropertiesDic;
  78. local customPropKeys = {
  79. key_gen_lua = { name = "key_gen_lua", default_value = "true" },
  80. key_lua_file_extension_name = { name = "key_lua_file_extension_name", default_value = "lua" },
  81. key_lua_path_root = { name = "key_lua_path_root", default_value = "UIGenCode/" },
  82. key_wrapper_namespace = { name = "key_wrapper_namespace", default_value = "CS.FairyGUI" },
  83. }
  84. local function get_project_custom_property_value(key_name)
  85. if (projectCustomPropertiesDic and projectCustomPropertiesDic:ContainsKey(key_name)) then
  86. return projectCustomPropertiesDic:get_Item(key_name);
  87. else
  88. return customPropKeys[key_name].default_value;
  89. end
  90. end
  91. function onPublish(handler)
  92. if not handler.genCode or handler.publishDescOnly then
  93. return
  94. end
  95. projectCustomPropertiesDic = App.project:GetSettings("CustomProperties").elements;
  96. local gen_lua = get_project_custom_property_value(customPropKeys.key_gen_lua.name);
  97. if (gen_lua == "true") then
  98. handler.genCode = false --prevent default output
  99. App.consoleView:Clear();
  100. fprint("Handling gen lua code in plugin.")
  101. genCode(handler)
  102. end
  103. end
  104. -- this is copied from Editor-Install-Path/Resources/Data/StreamingAssets/Scripts
  105. function genCode(handler)
  106. local settings = handler.project:GetSettings("Publish").codeGeneration
  107. local codePkgName = handler:ToFilename(handler.pkg.name); --convert chinese to pinyin, remove special chars etc.
  108. local exportCodePath = handler.exportCodePath..'/'..codePkgName
  109. local namespaceName = codePkgName
  110. local ns = 'fgui'
  111. if settings.packageName~=nil and settings.packageName~='' then
  112. namespaceName = settings.packageName..'.'..namespaceName;
  113. end
  114. --CollectClasses(stripeMemeber, stripeClass, fguiNamespace)
  115. local classes = handler:CollectClasses(settings.ignoreNoname, settings.ignoreNoname, ns)
  116. handler:SetupCodeFolder(exportCodePath, "ts") --check if target folder exists, and delete old files
  117. local getMemberByName = settings.getMemberByName
  118. local classCnt = classes.Count
  119. local writer = CodeWriter.new({ blockFromNewLine=false, usingTabs = true })
  120. --FUIPackageStart--
  121. writer:writeln('namespace ETModel')
  122. writer:startBlock()
  123. writer:writeln('public static partial class FUIPackage')
  124. writer:startBlock()
  125. writer:writeln('public const string %s = "%s";',codePkgName,codePkgName)
  126. -- 生成所有的
  127. local itemCount = handler.items.Count
  128. for i=0,itemCount-1 do
  129. --fprint(handler.items[i].path)
  130. local path = string.format('%s%s%s',codePkgName,handler.items[i].path,handler.items[i].name)
  131. --writer:writeln('public const string %s = "ui://%s";//%s',string.gsub(path,'/','_'),string.format('%s/%s',codePkgName,handler.items[i].name),string.format('ui://%s%s',handler.pkg.id,handler.items[i].id))
  132. writer:writeln('public const string %s = "ui://%s";',string.gsub(path,'/','_'),string.format('%s%s',handler.pkg.id,handler.items[i].id))
  133. end
  134. writer:endBlock()--class
  135. writer:endBlock()--namespace
  136. local binderPackageName = 'Package'..codePkgName
  137. writer:save(exportCodePath..'/'..binderPackageName..'.cs')
  138. --FUIPackageEnd--
  139. for i=0,classCnt-1 do
  140. local classInfo = classes[i]
  141. local members = classInfo.members
  142. local references = classInfo.references
  143. writer:reset()
  144. --local refCount = references.Count
  145. writer:writeln('using FairyGUI;')
  146. writer:writeln('using ETModel;')
  147. writer:writeln()
  148. writer:writeln('namespace ETHotfix')
  149. writer:writeln()
  150. writer:startBlock()
  151. writer:writeln()
  152. writer:writeln('[ObjectSystem]')
  153. writer:writeln('public class %sAwakeSystem : AwakeSystem<%s, GObject>',classInfo.className,classInfo.className)
  154. writer:startBlock()
  155. writer:writeln()
  156. writer:writeln('public override void Awake(%s self, GObject go)',classInfo.className)
  157. writer:startBlock()
  158. writer:writeln('self.Awake(go);')
  159. writer:endBlock()
  160. writer:endBlock()
  161. writer:writeln()
  162. writer:writeln('public partial class %s : %s', classInfo.className, 'FUI')
  163. writer:startBlock()
  164. writer:writeln('public const string UIPackageName = "%s";', handler.pkg.name)
  165. writer:writeln('public const string UIResName = "%s";', classInfo.resName)
  166. writer:writeln('public const string UIName = "%s.%s";', handler.pkg.name,classInfo.resName)
  167. writer:writeln('public GComponent self;', classInfo.resName)
  168. writer:writeln()
  169. local memberCnt = members.Count
  170. for j=0,memberCnt-1 do
  171. local memberInfo = members[j]
  172. local typeName = memberInfo.type
  173. -- 判断是不是我们自定义类型
  174. if string.find(typeName,'fgui')==nil then
  175. writer:writeln('public %s %s;', typeName,memberInfo.varName)
  176. else
  177. writer:writeln('public %s %s;', string.gsub(memberInfo.type,'fgui.',''),memberInfo.varName)
  178. end
  179. end
  180. --writer:writeln('public static string URL = "ui://%s%s";', handler.pkg.id, classInfo.classId)
  181. writer:writeln()
  182. writer:writeln('public void Awake(GObject go)')
  183. writer:startBlock()
  184. writer:writeln('if (go == null)')
  185. writer:startBlock()
  186. writer:writeln('return;')
  187. writer:endBlock()
  188. writer:writeln('GObject = go;')
  189. writer:writeln('Name = UIName;')
  190. writer:writeln('self = (GComponent)go;')
  191. writer:writeln('self.Add(this);')
  192. writer:writeln('var com = go.asCom;')
  193. writer:writeln('if (com != null)')
  194. writer:startBlock()
  195. for j=0,memberCnt-1 do
  196. local memberInfo = members[j]
  197. local typeName = memberInfo.type
  198. if memberInfo.group==0 then
  199. -- 判断是不是我们自定义类型
  200. if getMemberByName then
  201. if string.find(typeName,'fgui')==nil then
  202. writer:writeln('this.%s = ComponentFactory.Create<%s, GObject>( com.GetChildAt(%s));', memberInfo.varName, typeName, memberInfo.name)
  203. else
  204. writer:writeln('this.%s = (%s)com.GetChild("%s");', memberInfo.varName, string.gsub(memberInfo.type,'fgui.',''), memberInfo.name)
  205. end
  206. else
  207. if string.find(typeName,'fgui')==nil then
  208. writer:writeln('this.%s = ComponentFactory.Create<%s, GObject>( com.GetChildAt(%s));', memberInfo.varName, typeName, memberInfo.index)
  209. else
  210. writer:writeln('this.%s = (%s)com.GetChildAt(%s);', memberInfo.varName, string.gsub(memberInfo.type,'fgui.',''), memberInfo.index)
  211. end
  212. end
  213. elseif memberInfo.group==1 then
  214. if getMemberByName then
  215. writer:writeln('this.%s = com.GetController("%s");', memberInfo.varName, memberInfo.name)
  216. else
  217. writer:writeln('this.%s = com.GetControllerAt(%s);', memberInfo.varName, memberInfo.index)
  218. end
  219. else
  220. if getMemberByName then
  221. writer:writeln('this.%s = com.GetTransition("%s");', memberInfo.varName, memberInfo.name)
  222. else
  223. writer:writeln('this.%s = com.GetTransitionAt(%s);', memberInfo.varName, memberInfo.index)
  224. end
  225. end
  226. end
  227. --writer:writeln('OnInitialization();')
  228. writer:endBlock()
  229. writer:endBlock()
  230. writer:writeln()
  231. --writer:writeln('partial void OnInitialization();')
  232. writer:writeln()
  233. writer:writeln('public override void Dispose()')
  234. writer:startBlock()
  235. writer:writeln('base.Dispose();')
  236. writer:writeln('self.Remove();')
  237. writer:writeln('self = null;')
  238. for j=0,memberCnt-1 do
  239. local memberInfo = members[j]
  240. local typeName = memberInfo.type
  241. if memberInfo.group==0 then
  242. -- 判断是不是我们自定义类型
  243. if string.find(typeName,'fgui')==nil then
  244. writer:writeln('%s.Dispose();', memberInfo.varName)
  245. end
  246. writer:writeln('%s = null;', memberInfo.varName)
  247. else
  248. if getMemberByName then
  249. writer:writeln('%s = null;', memberInfo.varName)
  250. else
  251. writer:writeln('%s = null;', memberInfo.varName)
  252. end
  253. end
  254. end
  255. writer:endBlock()
  256. writer:endBlock() --class
  257. writer:endBlock()
  258. writer:save(exportCodePath..'/'..classInfo.className..'.cs')
  259. end
  260. end

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/959521
推荐阅读
相关标签
  

闽ICP备14008679号