扩展编辑器面板

Cocos Creator 允许用户定义一份面板窗口做编辑器的 UI 交互。

定义方法

panel 字段如下:

  1. { "name": "simple-package", "panel": { "main": "panel/index.js", "type": "dockable", "title": "Simple Panel", "width": 400, "height": 300 }}

panel 字段,并申明面板 typedockable 我们即可获得该份面板窗口。通过定义 main 字段我们可以为我们的面板窗口指定一份入口程序。

定义入口程序

Editor.Panel.extend() 函数来注册面板。如以下代码:

  1. // panel/index.jsEditor.Panel.extend({ style: ` :host { margin: 5px; } h2 { color: #f90; } `, template: ` <h2>标准面板</h2> <ui-button id="btn">点击</ui-button> <hr /> <div>状态: <span id="label">--</span></div> `, $: { btn: '#btn', label: '#label', }, ready () { this.$btn.addEventListener('confirm', () => { this.$label.innerText = '你好'; setTimeout(() => { this.$label.innerText = '--'; }, 500); }); },});

$ 获得面板元素,最后在 ready 中对面板元素的事件进行处理。 Editor.Panel.open('simple-package') 激活我们的面板窗口。 面板定义参考。

在主菜单中添加打开面板选项

要做到这些事情,我们需要在我们的 package.json 中注册主进程入口函数和主菜单选项:

  1. { "name": "simple-package", "main": "main.js", "main-menu": { "Panel/Simple Panel": { "message": "simple-package:open" } }, "panel": { "main": "panel/index.js", "type": "dockable", "title": "Simple Panel", "width": 400, "height": 300 }}

在主进程函数中,我们做如下定义:

  1. 'use strict';module.exports = { load () { }, unload () { }, messages: { open() { Editor.Panel.open('simple-package'); }, },};

一切顺利的话,你将可以通过主菜单,打开如下的面板: 面板字段参考。

窗口面板与主进程交互

Editor.Ipc 模块来完成。在我们上面定义的 index.js 中,我们可以通过在 ready() 函数中处理 按钮消息来达成。

  1. this.$btn.addEventListener('confirm', () => { Editor.Ipc.sendToMain('simple-package:say-hello', 'Hello, this is simple panel'); });

技术编辑你的窗口界面,还可以结合 Electron 的 内置 node 在窗口内 require 你希望的 node 模块,完成 任何你希望做的操作。