当前位置: 首页 > news >正文

专业网站建设网页推广手机app开发定制公司

专业网站建设网页推广,手机app开发定制公司,推广产品引流的最佳方法,可以建网站的公司本文涉及到的软件有#xff1a;FairyGUI#xff0c;VSCode 代码环境涉及到了#xff1a;Lua VSCode插件#xff1a;EmmyLua 在编写FairyGUI编辑器菜单前#xff0c;了解一下FairyGUIEditor的API会有效的帮助我们解决很多问题。FairyGUI的扩展是通过编辑器自带的插件功能…本文涉及到的软件有FairyGUIVSCode 代码环境涉及到了Lua VSCode插件EmmyLua 在编写FairyGUI编辑器菜单前了解一下FairyGUIEditor的API会有效的帮助我们解决很多问题。FairyGUI的扩展是通过编辑器自带的插件功能实现的插件中我使用的是lua环境模板。导入编辑器的LuaAPI文件可以在FairyGUI-Editor源码的插件目录中找到。接下来将通过功能来说明对应的API作用。 插件的位置 如果找不到插件面板可以通过“视图→插件”或“工具→插件”添加插件面板。 1、打开插件目录插件目录是在“项目目录/plugins文件夹下每个插件对应一个子文件夹。 2、创建新插件 3、刷新插件列表 一个新插件的诞生 点击创建新插件可以在插件模板选择要写的插件类型和语言格式 点击创建后插件列表中就会出现刚刚创建的新插件。 这时候点击打开插件目录会发现原本空空的插件目录中多了一个刚刚新建的插件文件夹右键使用VSCode打开。 可以注意到目录下有两个文件“main.lua”和“package.json”。其中main.lua是插件的入口脚本package.json是插件的配置文件。 双击main.lua后可以看到“onDestroy”方法可以将之后的清理代码添加到此处。保存编写后的代码在编辑器中点击刷新插件列表可以将最新插件代码同步到编辑器。如果这时候编辑器保存如果不是代码书写错误可以通过重启编辑器进行刷新插件。 编辑器的个人常用API App是工程入口类类型CS.FairyEditor.App。通过LuaAPI中的CS_FairyEditor_App可以看到编辑器中的功能字段。下面将列出将要用的字段和方法。 CS.FairyEditor.App字段名类型作用projectCS.FairyEditor.FProject记录当前工程的配置和资源libViewCS.FairyEditor.View.LibraryView编辑器的资源库面板inspectorViewCS.FairyEditor.View.InspectorView编辑器的检查器面板consoleViewCS.FairyEditor.View.ConsoleView编辑器的控制台面板menuCS.FairyEditor.Component.IMenu编辑器的菜单栏pluginManagerCS.FairyEditor.PluginManager插件管理 CS.FairyEditor.FProject字段名类型作用namestring工程名“如FGUIProject”basePathstring工程的路径“如D:\Documents\FGUIProject”assetsPathstring工程的路径“如D:\Documents\FGUIProject\assets”allPackagesCS.FairyEditor.Fpackage[]工程中的所有包allBranchesstring[]工程中的所有分支 CS.FairyEditor.Fpackage字段名类型作用namestring当前包的名字itemsCS.FairyEditor.FPackageItem[]当前包下的资源 CS.FairyEditor.FPackageItem字段名类型作用pathstring资源路径namestring资源名 CS.FairyEditor.View.LibraryView字段名类型作用contextMenuCS.FairyEditor.Component.NPopupMenu资源库的右键菜单 CS.FairyEditor.Component.NPopupMenu方法名参数作用AddItemcaption:string, name:string, selectCallback:(fun():void)添加一个菜单项并设置选中回调事件AddSeperator添加菜单分割线SetItemGrayedstring name, bool grayed设置目标不能点击onPopupCS.FairyGUI.EventListener菜单弹出事件 开始编写插件代码 需求1 需求1在工具菜单中添加“导出所有UI名字”的菜单项点击后复制结果。 前提所有UI界面具有相同的命名规则这里我用的是UIXXX所以在获取所有UI的时候只需要检测当前文件的名字UI是否存在。在这个需求实现的功能中需要准备一个lua代码格式的文本代码之后会将classField替换为获取到的UI名。 local tmp_ui_type [[ ---class UIType return {classField } ]] 代码已经加了详细的注解可以直接查看完整代码 ---type CS.FairyEditor.App local _app CS.FairyEditor.App local project _app.project ---输出绝对文件路径 local file_out_path (%s/UIType.lua):format(project.basePath) ---Lua模板 local tmp_ui_type [[ ---class UIType return {classField } ]] ---获取工具菜单 ---type CS.FairyEditor.Component.MenuBar local toolMenu _app.menu:GetSubMenu(tool) ---添加分隔符 toolMenu:AddSeperator() ---添加菜单,显示名字内部标签名回调方法 toolMenu:AddItem(导出UIType,XiaoExportUIType,function()local _classField ---获取工程中的所有包返回值是列表local allPackages _app.project.allPackagesfor i 1, allPackages.Count do---C#索引从0开始---type CS.FairyEditor.FPackagelocal package allPackages[i - 1]---获取当前包中的所有子项返回值是列表local items package.itemsfor i 1, items.Count do---type CS.FairyEditor.FPackageItemlocal item items[i - 1]---记录所有UI开头的子项if string.find(item.name,UI) 1 thenlocal uiType string.format(%s %s_%s,\n\t,item.name,package.name,item.name)_classField _classField .. uiTypeendendend---输出日志打印fprint(_classField)---替换模板tmp_ui_type tmp_ui_type:gsub(classField,_classField)---写出模板local f io.open(file_out_path,w)f:write(tmp_ui_type)f:close()---输出路径打印fprint(string.format(导出UIType[url]%s[/url],file_out_path)) end) function onDestroy() -------do cleanup here-------toolMenu:RemoveItem(XiaoExportUIType) end需求2 需求2在资源库的右键菜单中添加“复制组件脚本路径”方便提取当前组件的require路径。并且实现组件筛选在不满足条件的情况下“复制组件脚本路径”菜单项置灰不可用。 前提所有非UI的组件都在当前包的Comps的文件夹下存放。 重新新建一个插件或者在之前的插件中继续编写这里我是接着之前的插件继续写。 ---添加资源库右键菜单 ---需求复制Comps文件夹下的组件所转化的脚本路径 ---获取右键菜单 local libcontextMenu _app.libView.contextMenu ---添加分割线 libcontextMenu:AddSeperator() libcontextMenu:AddItem(复制组件脚本路径,XiaoCopyAssetPath,function()---获取当前选中的资源---type CS.FairyEditor.FPackageItemlocal item _app.libView:GetSelectedResource()---检测资源是否满足条件if item.path:find(/Comps/) 1 then---准备复制local cp_str (require(\UI.%s.Comps.%s\)):format(item.owner.name,item.name)---Unity复制操作CS.UnityEngine.GUIUtility.systemCopyBuffer cp_str---弹窗提示_app.Alert(复制成功)else_app.Alert(复制失败)end end)---在弹出的菜单中检测当前选择的资源是否满足条件 libcontextMenu.onPopup:Add(function()---type CS.FairyEditor.FPackageItemlocal item _app.libView:GetSelectedResource()local grayed trueif item.path:find(/Comps/) 1 then-- bodygrayed falseendlibcontextMenu:SetItemGrayed(XiaoCopyAssetPath,grayed) end) 之后不要忘记在onDestroy方法中移除我们的菜单项“XiaoCopyAssetPath” toolMenu:RemoveItem(XiaoCopyAssetPath) 完整插件代码 ---type CS.FairyEditor.App local _app CS.FairyEditor.App local project _app.project---输出绝对文件路径 local file_out_path (%s/UIType.lua):format(project.basePath)---Lua模板 local tmp_ui_type [[ ---class UIType return {classField } ]]---获取工具菜单 ---type CS.FairyEditor.Component.MenuBar local toolMenu _app.menu:GetSubMenu(tool) ---添加分隔符 toolMenu:AddSeperator() ---添加菜单,显示名字内部标签名回调方法 toolMenu:AddItem(导出UIType,XiaoExportUIType,function()local _classField ---获取工程中的所有包返回值是列表local allPackages _app.project.allPackagesfor i 1, allPackages.Count do---C#索引从0开始---type CS.FairyEditor.FPackagelocal package allPackages[i - 1]---获取当前包中的所有子项返回值是列表local items package.itemsfor i 1, items.Count do---type CS.FairyEditor.FPackageItemlocal item items[i - 1]---记录所有UI开头的子项if string.find(item.name,UI) 1 thenlocal uiType string.format(%s %s_%s,\n\t,item.name,package.name,item.name)_classField _classField .. uiTypeendendend---输出日志打印fprint(_classField)---替换模板tmp_ui_type tmp_ui_type:gsub(classField,_classField)---写出模板local f io.open(file_out_path,w)f:write(tmp_ui_type)f:close()---输出路径打印fprint(string.format(导出UIType[url]%s[/url],file_out_path)) end)---添加资源库右键菜单 ---需求复制Comps文件夹下的组件所转化的脚本路径 ---获取右键菜单 local libcontextMenu _app.libView.contextMenu ---添加分割线 libcontextMenu:AddSeperator() libcontextMenu:AddItem(复制组件脚本路径,XiaoCopyAssetPath,function()---获取当前选中的资源---type CS.FairyEditor.FPackageItemlocal item _app.libView:GetSelectedResource()---检测资源是否满足条件if item.path:find(/Comps/) 1 then---准备复制local cp_str (require(\UI.%s.Comps.%s\)):format(item.owner.name,item.name)---Unity复制操作CS.UnityEngine.GUIUtility.systemCopyBuffer cp_str---弹窗提示_app.Alert(复制成功)else_app.Alert(复制失败)end end)---在弹出的菜单中检测当前选择的资源是否满足条件 libcontextMenu.onPopup:Add(function()---type CS.FairyEditor.FPackageItemlocal item _app.libView:GetSelectedResource()local grayed trueif item.path:find(/Comps/) 1 then-- bodygrayed falseendlibcontextMenu:SetItemGrayed(XiaoCopyAssetPath,grayed) end)function onDestroy() -------do cleanup here-------toolMenu:RemoveItem(XiaoExportUIType)toolMenu:RemoveItem(XiaoCopyAssetPath) end 菜单的操作目前只用到了这两种后面在实际操作中如果还有则会继续更新
http://www.hkea.cn/news/14386226/

相关文章:

  • 适合女生做的网站合优人才网下载
  • 成都哪里有做网站的便宜网站建设公司哪家好
  • 用jsp做的简单网站代码郑州企业网站制作
  • 完整的活动策划方案seo包括网站建设吗
  • 珠海品牌网站制作宁波网站建设怎么做
  • 佛山网站建设运营支付宝网站开发
  • 电商运营培训课程网站电影分享网站源码
  • 免费网站域名注册申请江苏弘仁建设有限公司网站
  • 国外html响应式网站网站建设计划书内容
  • 如何做简单的网站 域名邮箱公司墙面设计企业文化
  • 网站个人主页如何优化推广网站
  • 广西建网站哪家好做网站工单
  • 大气科技类企业公司网站源码微信小程序引流推广软件
  • 做微站比较好的网站微信如何做模板下载网站
  • 服务支持型网站做网站还得买域名吗
  • 网站添加视频网站新闻页面无法翻页
  • 苏州地产网站建设公司企业免费网站系统
  • 微信开放平台网站应用网页制作基础教程第二版课后题
  • 怎么建立网站卖东西荆州网站建设流程
  • 网站未备案什么意思网页设计工作心得
  • wordpress获取文章自定义字段江门seo
  • ui设计好学吗岳阳seo外包
  • 做网站前端网址可以自己写吗网络推广外包想手机蛙软件
  • 太原市做网站做企业网站用哪个软件
  • 如何用凡科做网站化妆品网站优势
  • asp.net做网站实例沙坪坝网站建设哪家好
  • 网站二级域名设置高端女装有哪些品牌
  • 正能量视频素材免费下载网站网站建设制作公司
  • 广州最大网站建设WordPress防战工具
  • 网站建设设计流程图医院网站建设情况汇报