本章节将引导你从零开始设置一个 C# 项目(名为 ExampleMod),并配置调试环境,实现第一个“Hello World”按钮,彻底打通 MOD 开发的基础流程。
1️⃣ 准备工作
📁 文件夹结构
Mount & Blade II Bannerlord
└── Modules
└── ExampleMod
├── bin
│ └── Win64_Shipping_Client ← 编译输出DLL位置
└── SubModule.xml ← 核心配置文件
2️⃣ 创建 SubModule.xml
在 Modules/ExampleMod/ 文件夹中,创建 SubModule.xml,填入以下内容:
<?xml version="1.0" encoding="utf-8"?>
<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>
</Module>⚠️ 注意:Id 与 DLLName、命名空间 一致,否则无法加载模块。
3️⃣ 创建 C# 项目(DLL模块)
🎯 创建项目流程(Visual Studio):
- 打开 Visual Studio > 创建项目
- 选择:类库 (.NET Framework)
- 选择框架:.NET Framework 4.7.2
- 项目名称:ExampleMod
⚙️ 项目设置:
- 输出路径: 打开属性 > “生成” > 输出目录设为: javascript复制编辑$(SolutionDir)....Mount & Blade II BannerlordModulesExampleModinWin64_Shipping_Client
- 引用 DLL: 添加以下引用(从游戏安装目录): python-repl复制编辑TaleWorlds.Library.dll TaleWorlds.Core.dll TaleWorlds.MountAndBlade.dll TaleWorlds.Engine.dll ...
4️⃣ 创建 SubModule 类
在项目中添加一个新类文件 MySubModule.cs:
using TaleWorlds.Library;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;
namespace ExampleMod
{
public class MySubModule : MBSubModuleBase
{
protected override void OnSubModuleLoad()
{
base.OnSubModuleLoad();
Module.CurrentModule.AddInitialStateOption(new InitialStateOption(
"Message",
new TextObject("Message"),
9990,
() => InformationManager.DisplayMessage(new InformationMessage("Hello World!")),
() => (false, null)
));
}
}
}
5️⃣ 配置调试环境
✅ 方法 1(推荐):以游戏 EXE 启动调试
- 项目 > 属性 > 调试:
| 设置项 | 内容 |
|---|---|
| 启动外部程序 | Bannerlord.exe(主游戏程序) |
| 工作目录 | binWin64_Shipping_Client |
| 命令行参数(复制以下) |
/singleplayer _MODULES_*Native*SandBoxCore*CustomBattle*SandBox*StoryMode*ExampleMod*_MODULES_✅ 方法 2(可选):用启动器调试
- 启动外部程序:TaleWorlds.MountAndBlade.Launcher.exe
- 工作目录同上(注意可能略慢)
6️⃣ 编译 & 测试
🔨 编译:
- 右键项目 > 生成
- 确认生成的 ExampleMod.dll 出现在: python复制编辑ModulesExampleModinWin64_Shipping_Client
🧪 启动游戏测试:
- 打开 Bannerlord 启动器
- Singleplayer > Mods:勾选 ExampleMod
- 启动游戏
- 在主菜单界面应看到一个 Message 按钮
- 点击后屏幕左下角出现 Hello World! 提示
🎉 恭喜你!你的第一个 MOD 已成功加载并运行!
🧰 附加建议
🧩 使用 Bannerlord Module Template(推荐)
如果你使用的是 Visual Studio 2019+,可以通过 NuGet 或 GitHub 获取官方/社区的模块模板,自动生成结构化项目、自动引用 DLL、自动配置输出路径。