Basic Csharp Mod
介绍
这个教程接下来将一步一步教你创建一个基于 C# 的模组,这个模组将添加一个叫 Message 的按钮到单人游戏主界面,在点击这个按钮后将输出 Hello World。
准备工作
本教程中,我们将这个项目命名为 ExampleMod。
创建模组(SubModule.xml)
1. 前往游戏文件下的 Modules 目录。
2. 创建一个新的文件夹并命名为 ExampleMod(必须跟你第4步使用的id相同)。
3. 创建一个新的文件夹并命名为 bin 然后在其中新建一个子文件夹并命名为 Win64_Shipping_Client。
4. 在你第2步创建的目录下新建一个文件 SubModule.xml(必须是这个文件名)并粘贴该代码:查看代码
<Module> <Name value="Example Mod"/> <Id value="ExampleMod"/> <Version value="v1.0.0"/> <SingleplayerModule value="true"/> <MultiplayerModule value="false"/> <DependedModules> <DependedModule Id="Native"/> <DependedModule Id="SandBoxCore"/> <DependedModule Id="Sandbox"/> <DependedModule Id="CustomBattle"/> <DependedModule Id="StoryMode" /> </DependedModules> <SubModules> <SubModule> <Name value="ExampleMod"/> <DLLName value="ExampleMod.dll"/> <SubModuleClassType value="ExampleMod.MySubModule"/> <Tags> <Tag key="DedicatedServerType" value="none" /> <Tag key="IsNoRenderModeElement" value="false" /> </Tags> </SubModule> </SubModules> <Xmls/> </Module>
注意:MySubModule 是在编程部分会使用的类的名字。
5. 如果你使用了不同的名字,请修改以上文件并匹配你的 Module/SubModule 的值。
6. 打开游戏启动器并确认你的模组名字出现在了 Singleplayer > Mods 中。
查看更多有关目录的信息,请访问目录结构。
创建项目
在创建项目之前,要告知你这里对于基础模组(如物品/场景/文化等)而言是不需要的。
- 启动 Microsoft Visual Studio 并点击 新建项目(Create New Project)。
- 选择 Class Library (.NET Framework)。
- 将你的项目命名为 ExampleMod(如果你用了其它名字请确保命名空间和程序集名称是正确的)并使用.NET Framework 4.7.2 作为 Framework。如果没有这个选项,在这里下载(开发包)。
- 建好项目后,设置你的编译路径为游戏目录下的 Modules/ExampleMod/bin/Win64_Shipping_Client。
- 引用 在你游戏文件目录(不是你的模组目录)下 bin\Win64_Shipping_Client 中的 TaleWorlds.*(DLLs),并且引用每个官方模组目录 Modules\ModuleName\bin\Win64_Shipping_Client 下的 TaleWorlds.* DLLs。
调试项目(可选)
- 打开项目属性并转至 Debug 标签页。
- 选择 Start external program 选项并浏览至游戏文件(不是你的模组)下的目录 bin\Win64_Shipping_Client 中的 Bannerlord.exe。
- 设置工作目录为游戏文件(不是你的模组)下的目录 bin\Win64_Shipping_Client。
- 添加以下命令行参数(确定把 ExampleMod 换成了你的模组的名字)
- /singleplayer _MODULES_*Native*SandBoxCore*CustomBattle*SandBox*StoryMode*ExampleMod*_MODULES_
编程
1. 在你的 VS 项目中新建一个类并命名为 MySubModule,然后打开它。
2. 将以下指令添加到你的类中:
using TaleWorlds.Core; using TaleWorlds.Localization; using TaleWorlds.MountAndBlade;
3. 继承 MBSubModuleBase 类。
4. 覆盖 OnSubModuleLoad() 继承方法。
5. 添加如下代码到你的覆盖方法中:查看代码
6. 编译你的项目并确定文件被输出到了 Modules\ExampleMod\bin\Win64_Shipping_Client。
7. 打开游戏启动器转到 Singleplayer > Mods 确定你的模组被勾选了并启动。
8. 在主界面中,你应该可以看到一个 Message 按钮,单击后你会在左下角聊天框看见输出了 Hello World。
9. 你成功地创建了你的第一个游戏模组!