跳到主要内容

插件

编辑器支持插件。插件可以实现对编辑器的完全控制,包括但不限于以下功能:

  1. 显示自定义的视图。
  2. 显示自定义的Inspector。
  3. 自定义菜单。
  4. 对资源的操作,如导入导出等。
  5. 添加元件到舞台,以及设置舞台上的元件的属性。
  6. 插入自定义操作到发布流程。例如自定义发布代码。

支持使用Lua、Typescirpt、Javascript三种语言开发插件。插件宿主环境为XLua和Purets。 可以从仓库下载插件示例。

插件视图​

插件视图 图示 1

  • 插件视图 图示 2 打开插件放置的目录。插件目录是在“项目根目录/plugins"目录下,每个插件对应一个子目录。

  • 插件视图 图示 3 创建一个新的插件。点击后弹出对话框:

    插件视图 图示 4

    • 插件名称 插件的名称将作为插件目录的名称。
    • 显示名称 这里设置的值将显示在插件列表的标题中。
    • 描述 这里设置的值将显示在插件列表的描述中。
    • 插件模板 创建时可以使用一个模板,例如使用发布代码模板,模板里包含了自定义发布代码的整个流程,稍作修改就可以适应项目特殊的需求。

使用Lua开发插件​

编辑器开放的API可以在LuaAPI中找到。推荐使用EmmyLua编写插件。

可以通过fprint方法输出信息到控制台进行调试。

如果在main.lua里需要require其他Lua文件,应该使用PluginPath这个预定义的变量,例如:

require(PluginPath..'/xxx')

但PluginPath不能用在其他lua文件里。

参考资料:

  1. 在Lua中使用FairyGUI。
  2. XLua手册。
  3. 第三方生成Lua代码插件。

使用Typescript/Javascript开发插件​

编辑器开放的API可以在TsAPI中找到。推荐使用VSCode编写插件。编辑器运行的是JS,所以TS是需要转译为JS的。

如果在main.ts/main.js里要引入其他模块,按照nodejs的模块管理规则即可。

可以通过console.log输出信息到控制台进行调试。

以下是一些例子:

//引入C#类
const FairyEditor = CS.FairyEditor;

//发布开始通知
export function onPublishStart(pkgs: CS.System.Array$1<CS.FairyEditor.FPackage>) {
console.log(pkgs.get_Item(0).name);
}

//发布结束通知
export function onPublishEnd(pkgs: CS.System.Array$1<CS.FairyEditor.FPackage>) {
console.log(pkgs.get_Item(0).name);
}

//发起一个http请求
async function httpGetSample() {
let client = new CS.System.Net.Http.HttpClient()
var responseString = await puerts.$promise(client.GetStringAsync("http:/example.com/"));
console.log(responseString);
}

参考资料:

  1. 在Puerts中使用FairyGUI。
  2. Puerts手册。