meta data for this page
  •  

📚 差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

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