English README: README.md
面向《杀戮尖塔 2》Mod 作者的共享框架库。
RitsuLib 提供内容注册、模型身份、生命周期、持久化、设置界面、本地化、音频、UI 扩展与兼容辅助 API。它不替代游戏原生 API,也不要求放弃 BaseLib;它更像一层为常见 Mod 编写流程准备好的工具集。
文档站:https://sts2-ritsulib.ritsukage.com/
在 Mod 项目中引用 NuGet 包:
<PackageReference Include="STS2.RitsuLib" />然后在 mod_manifest.json 声明运行时依赖。游戏 API 0.105.x 及之后使用对象写法:
{
"dependencies": [
{ "id": "STS2-RitsuLib" }
]
}旧游戏 API 分支使用旧的字符串写法;旧版 manifest 解析器可能无法解析 dependency 对象,甚至直接报错:
{
"dependencies": [
"STS2-RitsuLib"
]
}如果项目没有使用 Central Package Management,请让包管理器或 IDE 选择当前兼容的包版本,不要从 README 复制固定版本号。旧游戏 API 分支使用对应的
STS2.RitsuLib.Compat.<api-version> 包。
Mod 开发时,项目里只需要引用一个 NuGet 包:
STS2.RitsuLib:用于当前支持的游戏 API 分支。STS2.RitsuLib.Compat.<api-version>:用于明确面向旧版《杀戮尖塔 2》API 分支的 Mod。
给玩家安装时,GitHub Release 可能还会提供
STS2-RitsuLib.<version>.variant-pack.zip。如果希望只安装一个 mods/STS2-RitsuLib/ 文件夹,并让它按当前运行的游戏选择对应 RitsuLib 构建,就使用这个资产,而不是各 compat 分支的
*.github.zip。根目录的 STS2-RitsuLib.dll 是加载器,真正按 API 区分的构建在 lib/<api-version>/ 下。
下游 Mod 仍按 Mod id 声明运行时依赖。具体 manifest 格式要匹配目标游戏 API 分支。
0.105.x 及之后:
{
"dependencies": [
{ "id": "STS2-RitsuLib" }
]
}旧分支:
{
"dependencies": [
"STS2-RitsuLib"
]
}变体包不会改变你的编译期 NuGet 引用;它只影响玩家安装运行时 RitsuLib Mod 的方式。
RitsuLibFramework.CreateContentPack(modId):注册内容、关键词、时间线、卡堆和顶栏按钮。RitsuLibFramework.CreatePatcher(modId, patcherName):创建带诊断日志的 Harmony patcher。RitsuLibFramework.SubscribeLifecycle<TEvent>(...):订阅框架和游戏生命周期事件。RitsuLibFramework.GetDataStore(modId)配合BeginModDataRegistration(modId):注册 JSON 持久化数据。RitsuLibFramework.RegisterModSettings(modId, configure):注册玩家可编辑的设置页面。
建议从快速入门开始,再按正在编写的功能阅读对应专题。
旧的配套分析器
STS2-ModAnalyzers-RitsuLib
(包名:STS2.ModAnalyzers.RitsuLib)已经归档,不再维护。
RitsuLib 风格项目请改用
STS2RitsuLibModAnalyzers
(包名:Nothing.STS2RitsuLib.ModAnalyzers)。它提供 RitsuLib 本地化与资源路径相关的 Roslyn 诊断,并且包内
buildTransitive 会自动把常见项目文件传给 analyzer。
MIT