[自用] Unity Modding 笔记
玩 DSP 的同时顺便试着做了两个 mod。
PID - 119114645 - にんげんまめ
BepInEx & Harmony
https://github.com/BepInEx/BepInEx
https://harmony.pardeike.net/
Mod 框架和注入工具。
VS2022 创建 C# Framework 的库项目之后把 BepInEx 中 core 的 dll 全部加进引用即可。如果要修改游戏还得把游戏附带的 Assembly-Csharp.dll 以及 Unity 的一些库都给引用。
主要用 Harmony 来注入游戏函数。
反编译
一般 C# 反编译的过程就是把 dll 和引用的相关 dll 全部拖到反编译器里就可以看了。
ILSpy
反编译速度很快。不过不支持引用查找。
dotPeek
非常好用的反编译器,而且还是免费的。Find Usages 可以查看任意变量的全部引用,并且支持全局模糊查找字符串。
Publicize
引用的 DLL 会有一些方法和成员是 private 或 protected 的,可以用 https://github.com/CabbageCrow/AssemblyPublicizer 对所有方法和成员 public 化。
使用时注意 Assembly-CSharp.dll 同文件夹下的 dll 必须全部完整,否则无法正常反编译。
Transpiler
修改游戏内方法的选项,直接在 IL 层面上进行修改,因此兼容性可能较差。
https://harmony.pardeike.net/articles/patching-transpiler.html
Garbage Collection
Unity 2018 没有 Incremental GC。所以 FPS Spike 很常见。
如何查看已编译游戏的 Unity 的构建版本
https://ngyikp.com/find-unity-game-build-version/
扩展阅读
https://mod.3dmgame.com/read/3
https://www.bilibili.com/read/cv8997496/
https://lethal.wiki/dev/starting-a-mod
https://foxi.buduanwang.vip/virtualization/pve/2962.html/
本文链接:https://pst.iorinn.moe/archives/unity-modding.html
许可: https://pst.iorinn.moe/license.html若无特别说明,博客内的文章默认将采用 CC BY 4.0 许可协议 进行许可☆