Plug
插件制作与发布
请插件制作者在制作插件时阅读该文档,以便学习如何制作插件以及了解规范。
请插件制作者在制作插件时阅读该文档,以便学习如何制作插件以及了解规范。
插件发布规范
- 不能引用模板自带的模块或数据或素材资源,请取消勾选该引用项。
- 素材资源请保证建立在自己专用的文件夹下,命名遵循:自定义_{用户编号},如 asset/image/kds_1/xxx.png 以便不会与其他插件或模板带有的素材冲突。
- 包含【场景对象模型的部分属性】或【世界设定】或【玩家设定】时,尽可能使用复杂不容易重名的命名,如使用 变量名_{用户编号},存在重名属性会无法安装该插件。
- 有分类的内容,请制作到16分类-插件里,以便统一管理。
- 脚本的类名尽可能使用复杂的命名,不容易重名的变量名称,如使用 类名_{用户编号},如果存在同名类,可能造成冲突,导致游戏报错。
- 脚本中对各种模块或数据的引用时,为确保能够找到用户安装后对应的编号,请参考附录:定义数据编号。
比如引用了5号界面,如果这个5号界面是你一起要打包装入插件里的话,则用户安装后会插入到一个空位置上,编号会发生变更。可能变为10了
如果这个5号界面并没有打包进插件里的话,系统并不会替换该编号,仍然使用用户当前工程下的5号界面。
制作内容插件
插件可以包含以下内容,点击后跳转到相关文档中查看如何制作。
显示相关 | 数据逻辑 |
---|---|
行走图 | 场景对象原型 |
立绘 | 自定义模块 |
动画 | 自定义行为 |
对话框样式 | 自定义指令 |
界面 | 自定义条件分歧 |
图块 | 世界设定 |
自动元件 | 玩家设定 |
地图 | 自定义游戏数值 |
资源 | 脚本 |
发布插件
打开发布插件界面
菜单-插件系统-发布插件
添加管理插件内容元素
选择添加插件内容元素即可添加对应的元素(仅限于当前工程存在的)。
对于手动关联的可以使用鼠标右键进行删除,自动关联的可通过勾选项决定是否打包,
比如模板自带的数据、素材等需要取消勾选,参考【插件发布规范】。
请检查打包的资源,确保发布时正确包含仅插件相关的内容。
关于预览插件效果
勾选预览插件效果会将会把当前工程的游戏一起上传作为演示效果。
更新插件
如果是更新插件而非新发布插件的话请在插件名称右边选择该插件。
适用范围
适用范围 | 说明 |
---|---|
通用插件 | 适用于任何模板,无论是单机模板还是网络模板 |
2D单机内核 | 适用于所有基于2D单机内核的模板,如《RPG-苍之羽》和《ARPG-黑之书》 |
2D网络内核 | 适用于所有基于2D网络内核的模板 |
3D单机内核 | 适用于所有基于3D单机内核的模板 |
3D网络内核 | 适用于所有基于3D网络内核的模板 |
该模板专用 | 适用于该模板或该模板的衍生模板 |
指定多个模板适用 | 适用于多个指定的模板以及其衍生模板 |
我发布的插件管理
在菜单-插件系统-插件管理中可以查看【我的插件】、【审核中】、【已通过】、【未通过】的插件。
其中未通过目前可以通过鼠标悬停查看审核失败理由。
附录
定义数据编号
在打包进插件的脚本中任意地方按照规范定义变量名,其他地方调用即可。
符合变量名命名规则即可(必须带有类型和赋值,值必须是常数)。
比如调用5号界面,定义一个类的静态变量:static PLUGIN_GUI_自定义命名:number = 5,
这样在安装插件时系统能够找到并替换成正确的编号。
以下为各处地方定义的示例:
Script.ts
// 定义在类中的静态变量
static PLUGIN_GUI_自定义命名:number = 5;
// 定义在类中的实例属性
private PLUGIN_GUI_自定义命名:number = 5;
public PLUGIN_GUI_自定义命名:number = 5;
protected PLUGIN_GUI_自定义命名:number = 5;
// 定义外部的全局变量或者内部局部变量
var PLUGIN_GUI_自定义命名:number = 5;
let PLUGIN_GUI_自定义命名:number = 5;
数据 | 变量名 |
---|---|
行走图编号 | PLUGIN_AVATAR_自定义命名:number = 1 |
立绘编号 | PLUGIN_STAND_AVATAR_自定义命名:number = 1 |
动画编号 | PLUGIN_ANIMATION_自定义命名:number = 1 |
对话框样式编号 | PLUGIN_DIALOG_自定义命名:number = 1 |
图块编号 | PLUGIN_TILE_自定义命名:number = 1 |
自动元件编号 | PLUGIN_AUTOTILE_自定义命名:number = 1 |
界面编号 | PLUGIN_GUI_自定义命名:number = 1 |
场景编号 | PLUGIN_SCENE_自定义命名:number = 1 |
模块类别编号 | PLUGIN_MODULE_TYPE_自定义命名:number = 1 |
插件元素的自动关联项参考表
显示相关 | 可能自动关联的资源 |
---|---|
行走图 | 【图片资源】:该行走图使用到的所有图片资源 【其他行走图】:来自该行走图的部件 |
立绘 | 【图片资源】:该立绘使用到的所有图片资源 【其他立绘】:来自该立绘的部件 |
动画 | 【图片资源】:该动画使用到的所有图片资源 【其他动画】:来自该动画内嵌套的其他子动画元素 【音效资源】:该动画使用到的所有音效资源 |
对话框样式 | 【图片资源】:该立绘使用到的所有图片资源 【动画资源】:Skip跳过标志使用到的动画以及头像使用动画模式下用到的动画预览 【立绘资源】:该对话框样式的头像立绘模式下用到的立绘预览 【界面资源】:该对话框样式的头像界面模式下用到的界面预览 |
界面 | 【脚本资源】:该界面的脚本绑定类所在的.ts或者.js文件 【图片资源】:该界面使用到的所有图片资源 【行走图资源】:该界面使用到的所有行走图资源 【立绘资源】:该界面使用到的所有立绘资源 【动画资源】:该界面使用到的所有动画资源 【其他界面】:该界面使用到的其他子界面 不会包含任何事件和出现条件 |
图块 | 【图片资源】:该图块使用到的图片素材 |
自动元件 | 【图片资源】:该自动元件使用到的图片素材 |
地图 | 【脚本资源】:弱关联,因为很大概率会重叠,需要手动勾选 【音频资源】:使用到的背景音乐和环境音效 【图片资源】:图层中使用到所有图片资源(图片、图块、自动元件) 【其他资源】:场景预加载的所有资源 不会包含任何场景对象和事件 |
资源 | 无其他关联项 |
数据逻辑 | 可能自动关联的资源 |
---|---|
场景对象模型 | 【脚本资源】:弱关联,因为很大概率会重叠,需要手动勾选 【界面资源】:指定了具体的界面时会关联该界面 【动画资源】:指定了具体的动画时会关联该界面 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
自定义模块 | 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
自定义行为 | 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
自定义命令 | 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
自定义条件分歧 | 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
世界设定 | 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
玩家设定 | 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
自定义游戏数值 | 【数据结构】:变量属性中含有的数据结构 【自定义模块】:变量属性中含有的自定义模块 |
脚本 | 无其他关联项 |
重写已经有的函数
制作插件时可能涉及到需要扩展原有脚本的需求。通过重写函数,
重写类的静态方法,假设名为ABC的类中的myFunc方法:
Script.ts
// 记录原函数
var oldAbcMyFunc = ABC.myFunc;
// 重写该函数
ABC.myFunc = function(){
// 执行旧的函数,作用域和参数保证是当前调用的,可以任意修改调用的顺序,或者不执行该行时表示不执行任何旧逻辑
oldAbcMyFunc.apply(this,arguments);
// 执行新的逻辑....
XXXXXXXXXXXX
}
重写类的实例方法,假设名为ABC的类中有myFunc的实例方法:
Script.ts
// 记录原函数
var oldAbcMyFunc = ABC.prototype.myFunc;
// 重写该函数
ABC.prototype.myFunc = function(){
// 执行旧的函数,作用域和参数保证是当前调用的,可以任意修改调用的顺序,或者不执行该行时表示不执行任何旧逻辑
oldAbcMyFunc.apply(this,arguments);
// 执行新的逻辑....
XXXXXXXXXXXX
}