这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
developer:plugins:main [2024/07/23 18:46] – 创建 bibiboxs | developer:plugins:main [2024/08/19 09:36] (当前版本) – bibiboxs | ||
---|---|---|---|
行 1: | 行 1: | ||
< | < | ||
- | # 插件机制 | + | # 模组插件 |
- | > 此文档等待完善。 | + | |
+ | 模组插件是放置在`Mod\Plugin`目录下的特定规范文件,主要用于不同`Script`脚本加载使用。 | ||
+ | |||
+ | **对于专为某功能设计的脚本,通常应该被制作为插件**。 | ||
+ | |||
+ | |||
+ | |||
+ | ## 插件机制 | ||
+ | |||
+ | > 某些开发者倾向于制作模组,而某些开发者更倾向于制作“功能模块”(即插件,或全局类脚本)。 | ||
+ | > | ||
+ | > 插件通常在设计和编写上,可以无需脚本的过多干预(甚至无须修改脚本)即可**实现额外的功能**,这既是插件诞生的目的。 | ||
+ | |||
+ | 因此,模组插件与脚本`LoadScript()`方法有些相似,但插件更适用于**可能被多脚本引用、功能模块独立**的情况。 | ||
+ | |||
+ | |||
+ | |||
+ | ### 脚本加载顺序 | ||
+ | |||
+ | > 加载脚本文件 > **加载插件(`Plugins.txt`)** > `OnScriptLoad` | ||
+ | |||
+ | |||
+ | |||
+ | ### 脚本作用域 | ||
+ | |||
+ | > **注意:加载插件与加载子脚本的底层方式是相同的,均是在现有代码的基础上==文本续写==。** | ||
+ | |||
+ | 在此情况下,开发者应避免大众的变量及方法名称(或者可以单独维护一份自身“插件类”),**避免误触发或被误触发相同的变量及方法名**。 | ||
+ | |||
+ | |||
+ | |||
+ | ## | ||
+ | |||
+ | 模组插件(Plugin)可以被认为是一种**额外的独立脚本**,因此在使用方式和目录管理上,几乎和`Script`文件夹相同。 | ||
+ | |||
+ | 1. 首先,在模组的`Plugin`文件夹创建新的**脚本目录**(就像`Script`目录一样) | ||
+ | 2. 例如创建`Plugin\PlayerCharacterTag`,随后在此文件夹下,分别建立`World.js | Client.js`脚本文件 | ||
+ | 3. 与正常脚本编写机制相同,在不同的`js`脚本编写对应逻辑 | ||
+ | 4. 在任何需要加载插件的脚本环境(例如`Script\Main`)目录创建`Plugins.txt` | ||
+ | 5. 在`Plugins.txt`文件以每行进行分割,每行填写要加载的插件目录名(即`PlayerCharacterTag`) | ||
+ | 6. 保存`Plugins.txt`文件,后续加载`Script\Main`脚本时,会自动引入加载`PlayerCharacterTag`内的脚本代码 | ||
+ | |||
+ | |||
+ | |||
+ | ## 编写指南 | ||
+ | |||
+ | 在准备编写**模组插件**之前,需要确保已了解插件的机制(以及与子脚本的不同)。 | ||
+ | |||
+ | 编写插件与编写正常脚本几乎没有差异(==**插件不支持`LoadScript()`**==),开发者可按照正常脚本方式进行编写。 | ||
+ | |||
+ | **==通常情况下,配合插件编写的最佳写法是配合`AddListener() | Emit() `进行事件注册和触发,已达到无需修改原脚本即可扩展功能。==** | ||
+ | |||
+ | |||
+ | |||
+ | ## 插件翻译文件 | ||
+ | |||
+ | 在模组插件开发中,有时可能需要兼容多语言翻译,此情况可以利用【子翻译文件】的机制进行合并翻译文本。 | ||
+ | |||
+ | **详情参考:[《子翻译文件》](developer/ | ||
+ | |||
+ | |||
</ | </ |