
制作皮肤mod不需要写代码,只要替换对应的图片与动画素材即可,以下为具体制作步骤。
需提前准备Godot 引擎、Fmod、游戏反编译文件(借助 grde 工具完成反编译)。
整体流程参考:超详细教程 真·0基础完成杀戮尖塔2Mod开发(强烈建议看完前两 P后再来看本教程!)
游戏反编译教程:[教程]反编译杀戮尖塔2可执行文件到可运行项目(反编译导出时,若弹出插件安装提示,请选择No。)
先下载对应插件文件,下载链接可查阅:
https://tutorials.sts2modding.com/docs/05-card-art-and-skin-replacement/#spine%E5%AF%BC%E5%85%A5
制作角色皮肤需准备对应场景动画,分为战斗、商店、火堆三大类,动画可整合至同一个 Spine 模型,也可拆分制作。
战斗模型必备动画 :
attack(攻击)、cast(施法)、die(死亡)、hurt(受击)、idle_loop(待机循环)
各角色专属额外战斗动画:
战士:attack_heavy(重击)
猎手:shiv(投掷小刀)
亡灵:cast_mighty(强力施法)
机器人:process(能力 / 加费)
储君:attack_sovereign(愤怒攻击)
商店场景动画: relaxed_loop(商店待机动画)
火堆场景动画: overgrowth_loop(一层密林・绿色火焰)、hive_loop(二层巢穴・橙色火焰)、glory_loop(三层荣耀・蓝色火焰)
补充说明:商店、火堆场景支持用静态图片替代动画,下文会讲解具体设置方法。
打开 Spine 软件,按下Ctrl+E或点击左上角「导出」,按以下参数配置:
1. 数据格式选择二进制,生成.skel文件;
2. 纹理图集勾选打包为单个图集;
3. 根据素材尺寸,在左下角调整模型整体缩放比例,避免模型过大 / 过小;
4. 完成设置后点击导出,最终会得到三类核心文件:.skel、.atlas、.png。


1. 启动 Godot 引擎,新建空白项目,项目名称就是你的mod名;
2. 关闭 Godot,将下载好的 Spine 插件文件(windows文件夹和spine_godot_extension.gdextension)放入项目根目录;
3. 后续重新打开项目即可加载插件。这里可以先不打开,先准备下面的文件素材。
从游戏反编译目录中,按原路径结构复制以下文件至 Godot 项目目录(以战士为例),替换其他角色时,对应更换角色名称文件即可。
下面这些png图片素材可以直接用你准备好的要替换的图片改成相同的文件名后,直接覆盖替换即可。
选人界面头像:images/packed/character_select/char_select_ironclad.png和char_select_ironclad_locked.png
地图角色标记:images/packed/map/icons/map_marker_ironclad.png
角色小头像:images/ui/top_panel/character_icon_ironclad.png和character_icon_ironclad_outline.png
目标选择框素材(不用替换):images\ui\combat\combat_reticle.png
这些场景后续会在 Godot 内编辑。
战斗动画场景:scenes/creature_visuals/ironclad.tscn
商店角色场景:scenes/merchant/characters/ironclad_merchant.tscn
火堆角色场景:scenes/rest_site/characters/ironclad_rest_site.tscn
选人界面背景:scenes/screens/char_select/char_select_bg_ironclad.tscn
复制以下.cs脚本文件,缺失会导致场景打开报错(仅防报错,无需修改):
src/Core/Nodes/Combat/NCreatureVisuals.cs和NSelectionReticle.cs
src/Core/Nodes/RestSite/NRestSiteCharacter.cs
src/Core/Nodes/Screens/Shops/NMerchantCharacter.cs
将 Spine 导出的.skel、.atlas、.png文件,统一放置到项目目录,推荐路径:animations/characters/自定义角色名(与游戏原生文件路径保持一致,或者自己建一个文件夹放进去也可以正常使用)。 全部文件部署完成后,重新启动 Godot 项目。

1. 在 Godot 左下侧文件栏右键 → 新建资源,搜索并创建 SpineSkeletonDataResource 资源(后缀.tres)。如果没搜到,说明你可能是忘记加之前的Spine插件了;
2. 选中新建的.tres文件,在右侧「检查器」面板中,依次绑定导出的.atlas图集文件与.skel骨架文件;
3. 若拆分了多套 Spine 模型,需按照以上步骤,分别创建对应.tres资源文件。
参考文档:https://tutorials.sts2modding.com/docs/05-card-art-and-skin-replacement/#spine%E5%AF%BC%E5%85%A5


1. 双击打开ironclad.tscn场景,弹出「缺失文件」提示可直接忽略,打开即可;
2. 在场景层级中选中Visuals节点;
3. 在右侧检查器面板,将Skeleton Data Res绑定为上一步创建的.tres动画资源;
4. 预览区可查看动画播放效果;在Transform栏调整模型位置、大小、旋转,角色头顶高度建议设置在 260~280,最终效果可进游戏复测微调。




1. 双击打开ironclad_merchant.tscn场景,绑定对应.tres动画资源(若商店动画与战斗动画共用一套 Spine 模型,可直接复用已有.tres文件);
2. 角色头顶高度建议设置在 440~480,根据游戏内实际显示效果微调。
方案:静态图片替代商店动画
1. 在当前场景右键 → 添加子节点,选择 TextureRect(图片显示节点);
2. 将准备好的商店静态立绘(立绘图片文件建议放到之前放Spine文件资源的文件夹里),从资源窗口里拖拽至该节点中即可生效;
3. 原有 Spine 动画节点无需额外修改。


操作逻辑与商店动画一致,双击ironclad_rest_site.tscn,绑定对应.tres资源即可。
方案:静态图片替代火堆动画(解决功能 BUG)
直接使用静态图会出现 BUG:在火堆选择休息后,「前进」按钮无法正常显示,修复步骤如下:
1. 新建TextureRect节点,导入火堆静态立绘;
2. 从游戏反编译目录animations/rest_site/ironclad中,复制原版火堆动画文件夹至项目目录;
3. 为场景内原有SpineSprite节点绑定原版动画.tres文件,再点击节点旁眼睛图标隐藏该节点(只加载文件、不显示画面),即可修复按钮异常问题。

1. 双击打开char_select_bg_ironclad.tscn,忽略缺失文件提示直接打开并进入编辑;
2. 若使用静态背景:新建TextureRect节点,导入背景图片;
3. 若使用动态背景:参照前文步骤,为SpineSprite节点绑定 Spine 动画.tres资源;
4. 原版场景内多余组件可直接隐藏;
注意:背景的尺寸、位置大概率需要进游戏测试后,返回 Godot 反复调整。
Godot 顶部菜单栏选择:项目 → 导出,选择 Windows 格式(第一次导出需要下载模板,导出部分教程可参考教程开头的视频教程),导出后缀为.pck的文件,文件名即为你的 MOD 名称。
1. 打开《杀戮尖塔 2》游戏根目录,新建文件夹并命名为mods;
2. 在mods文件夹内,新建 文件夹(文件夹名即为 MOD 名称);
3. 将导出的.pck文件放入该 MOD 文件夹中。
1. 在 MOD 文件夹内新建文本文档,将后缀改为.json(也可直接复制其他 MOD 的 json 文件修改);
2. 写入以下配置内容,按需修改对应参数:
{
"id": "你的MOD名称",
"name": "游戏内显示的MOD名称",
"description": "MOD功能/介绍描述",
"author": "作者名称",
"version": "0.1.0",
"has_dll": false,
"has_pck": true,
"affects_gameplay": false
}
参数说明:
· version:自定义 MOD 版本号;
· has_dll:纯皮肤 MOD 未编写代码,固定为false;
· has_pck:依赖 pck 资源文件,固定为true。
·"affects_gameplay": false 使用创意工坊的话要加上这条才能在多人模式里使用。

启动游戏,右下角出现「已加载模组:*游戏内显示的mod名称*」提示即代表mod加载成功。
进入游戏,逐一检查选人界面、战斗、商店、火堆的角色显示效果,若尺寸、位置异常,返回 Godot 调整后重新导出.pck文件覆盖即可。
将mod上传到创意工坊的方法请查阅该视频【杀戮尖塔2】安东尼也懂的创意工坊上传。