From 76a1b7a7e4a9ef1de98ffb0f1b447f6af3171184 Mon Sep 17 00:00:00 2001 From: Cai <13110818005@qq.com> Date: Sat, 4 May 2024 01:50:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9A=E4=BC=98=E5=8C=96Pa?= =?UTF-8?q?rt2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Document/Part2.md | 91 +++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 51 deletions(-) diff --git a/Document/Part2.md b/Document/Part2.md index c7c3023..901189d 100644 --- a/Document/Part2.md +++ b/Document/Part2.md @@ -1,13 +1,13 @@ -## Part 2.初步了解TShock插件模板​ +# Part 2.初步了解TShock插件模板​ 本章你将学到: * TShock插件模板各部分的作用 * TShock插件的初始化顺序 -### 插件模板​ +## 插件模板​ -以下是一个常用的TShock插件模板 +> 以下是一个常用的TShock插件模板 @@ -64,14 +64,8 @@ namespace Plugin ``` - - - -### 插件基本信息​ -以下代码可以设置插件的一些基本信息,插件名建议按照功能命名,不要起奇怪名字\(例如"炸裂"\) - - - +## 插件基本信息​ +> 以下代码可以设置插件的一些基本信息,插件名建议按照功能命名,不要起奇怪名字\(例如"炸裂"\) ```csharp //定义插件的作者名称 public override string Author => "插件的作者"; @@ -86,14 +80,11 @@ public override string Name => "插件的名字"; public override Version Version => Assembly.GetExecutingAssembly().GetName().Version; ``` -Author\(插件作者\)、Name\(插件名字\)、Version\(插件版本\)将会在插件初始化完成时显示 +- Author\(插件作者\)、Name\(插件名字\)、Version\(插件版本\)将会在插件初始化完成时显示 ![1693020601153.png](Resourse/6526_0d62fb22e43fa3980efba17731fe70e6.png "1693020601153.png") - -其中,Version可以通过new Version修改,如下: - - +- 其中,Version可以通过new Version修改,如下: ```csharp //插件的版本 @@ -101,27 +92,27 @@ public override Version Version => new Version(1, 0, 0, 0); //public override Version Version => Assembly.GetExecutingAssembly().GetName().Version; ``` -使用new Version\(\)将会显示此方法参数为版本号\(例如本例子中的"1.0.0.0"\) -而使用Assembly.GetExecutingAssembly\(\).GetName\(\).Version获取的是程序集的版本号, 程序集版本号需要在项目属性中修改 +- 使用new Version\(\)将会显示此方法参数为版本号\(例如本例子中的"1.0.0.0"\) +- 而使用Assembly.GetExecutingAssembly\(\).GetName\(\).Version获取的是程序集的版本号, 程序集版本号需要在项目属性中修改 > 注: 如果你使用new Version\(\)作为版本号,将会以你Version\(\)的参数作为版本号,而不是程序集版本
修改程序集版本 - 1.右键解决方案资源管理器中的项目\(这里是HelloWorld\),然后点击属性 + 1. 右键解决方案资源管理器中的项目\(这里是HelloWorld\),然后点击属性 图片描述 图片描述 - 2.在属性选项卡中依次找到包—常规—程序集版本 + 2. 在属性选项卡中依次找到包—常规—程序集版本 图片描述 - 3.修改程序集版本即可 + 3. 修改程序集版本即可
-### 插件的构造器​ +## 插件的构造器​ -插件的构造器,也叫构造函数,构造函数中的代码会比Initialize\(初始化\)函数更先执行 -服务端会先按照读取到插件的顺序\(取决于插件的文件名\)执行所有插件的构造函数,再按照Order\(等下会讲\)由小到大执行Initialize\(初始化\)函数 +- 插件的构造器,也叫构造函数,构造函数中的代码会比Initialize\(初始化\)函数更先执行. +- 服务端会先按照读取到插件的顺序\(取决于插件的文件名\)执行所有插件的构造函数,再按照Order\(等下会讲\)由小到大执行Initialize\(初始化\)函数 @@ -133,39 +124,37 @@ public Plugin(Main game) : base(game) } ``` -通常情况下,构造函数的执行会在TShock初始化之前,如果在构造函数中编写代码\(例如建表\),可能会导致十分玄学的问题, -所以没有特殊需要下一般插件的构造函数都会直接放空。 +- 通常情况下,构造函数的执行会在TShock初始化之前,如果在构造函数中编写代码\(例如建表\),可能会导致十分玄学的问题, 所以没有特殊需要下一般插件的构造函数都会直接放空。 -#### 在构建函数中修改Order\(听不懂没事\) +### 在构建函数中修改Order\(听不懂没事\) -构造函数常常会用来修改插件的初始化顺序—Order -Order是一个int类型的整数,Order可以在取int类型范围内的任何数,当然也可以是负数 -Order越小插件的初始化就越优先,Order为1的插件会比Order为2的插件先初始化, TShock的Order为0, -插件的Order在默认情况下\(不修改\)为1,而TShock的Order为0,所以TShock会比其他插件更先初始化 +- 构造函数常常会用来修改插件的初始化顺序—Order +- Order是一个int类型的整数,Order可以在取int类型范围内的任何数,当然也可以是负数 +- Order越小插件的初始化就越优先,Order为1的插件会比Order为2的插件先初始化, TShock的Order为0 +- 插件的Order在默认情况下\(不修改\)为1,而TShock的Order为0,所以TShock会比其他插件更先初始化
- Order小实验 - 1.编写两个插件,在执行构造函数和初始化函数执行时打印文本 - 图片描述 - 2.重命名并安装插件 - 当Order为1的插件在文件夹中更靠前时\(以文件名排序\),Order为1的插件的构造函数将会先被执行 - 图片描述 - ![1693022440424.png]( "1693022440424.png") - 图片描述 - 相反,当Order为2的插件在文件夹中更靠前时\(以文件名排序\),Order为2的插件的构造函数将会先被执行 - 图片描述 - 图片描述 - 所以,插件构造函数的执行顺序取决于插件的文件名,与Order无关 - 但是无论文件名如何修改,Order为1的插件总会先初始化,如下图: - 图片描述 - 所以,插件初始化函数的执行顺序取决于Order,与插件的文件名无关 + Order例子 + 1. 编写两个插件,在执行构造函数和初始化函数执行时打印文本
+ 图片描述
+ 2. 重命名并安装插件
+
  • 当Order为1的插件在文件夹中更靠前时\(以文件名排序\),Order为1的插件的构造函数将会先被执行
    + 图片描述
    + 图片描述
    +
  • 相反,当Order为2的插件在文件夹中更靠前时\(以文件名排序\),Order为2的插件的构造函数将会先被执行
    + 图片描述
    + 图片描述
    +
  • 所以,插件构造函数的执行顺序取决于插件的文件名,与Order无关
    +
  • 但是无论文件名如何修改,Order为1的插件总会先初始化,如下图:
    + 图片描述
    +
  • 所以,插件初始化函数的执行顺序取决于Order,与插件的文件名无关
  • -### 插件的初始化函数​ +## 插件的初始化函数​ -初始化函数是TShock插件中非常重要的部分,这个函数主要负责插件的初始化,可以用来注册钩子、添加命令、注册REST API命令、初始化配置文件、初始化数据库等 +> 初始化函数是TShock插件中非常重要的部分,这个函数主要负责插件的初始化,可以用来注册钩子、添加命令、注册REST API命令、初始化配置文件、初始化数据库等 @@ -183,10 +172,10 @@ public override void Initialize() -### 插件的卸载函数​ +## 插件的卸载函数​ -相较于初始化函数,卸载函数显得 -但是为了代码规范,还是建议你把注册过的钩子卸载,删除添加的命令 +> 相较于初始化函数,卸载函数显得 +> 但是为了代码规范,还是建议你把注册过的钩子卸载,删除添加的命令