Unity游戏Mod/插件制作教程01 – BepInEx的安装和使用
前言
本章节为没有使用过BepInEx的同学进行BepInEx的安装和使用方面的介绍,如果你之前已经使用过并了解如何使用,可以直接跳过本章节。
BepInEx下载
BepInEx的Github链接 https://github.com/BepInEx/BepInEx/releases
一共有3种版本,BepInEx_unix_5.x.x.x为unix类操作系统使用的版本,教程以windwos版本为主(我没有其他系统的电脑),所以就不用下载这个版本了。BepInEx_x64_5.x.x.x和BepInEx_x86_5.x.x.x分别对应64位Unity和32位Unity,对于想要制作插件的游戏,打开游戏根目录,可以找到UnityCrashHandler64或者UnityCrashHandler32这两个文件的其中一个,根据末尾的数字选择对应版本的BepInEx下载。
BepInEx安装
前文提到过BepInEx的安装非常简单,只需要将BepInEx解压到游戏根目录即可。
解压后的文件结构应如下所示(带星号的为BepInEx的部分):
|-XXXGame
|-BepInEx*
|-core
|-...
|-XXXGame_Data
|-doorstop_config.ini*
|-UnityCrashHandler64.exe
|-UnityPlayer.dll
|-XXXGame.exe
|-winhttp.dll*
如果安装无误,启动游戏之后,在BepInEx文件夹下应该会生成几个文件夹,如下:
|-BepInEx
|-cache //缓存文件夹
|-config //插件配置文件夹
|-core //框架核心文件夹
|-patchers //特殊插件文件夹
|-plugins //常规插件文件夹
|-LogPutput.log //BepInEx日志
如果没有生成这几个文件夹,请重新确认游戏使用的Unity版本、游戏路径是否有中文、安装位置是否正确。
你可能会疑惑,为什么我们没有运行任何程序,也没有什么注入dll的操作,BepInEx就加载成功了?
这其实是因为,应用程序总是会用系统目录的一些库文件,而程序加载的时候,是先从自己的文件夹内搜索库文件,如果找不到,再去系统目录查找。利用这个原理,UnityDoorStop将加载插件的逻辑嵌入到winhttp.dll这个库中,同时不动它原来的其他逻辑。这样,就在保证了原功能不变并且不需要破坏游戏程序的情况下,加载了我们的插件。
插件的安装
本教程以常规插件的制作教程为主,所有的常规插件最后都是一个dll文件的形式,放入BepInEx/plugins文件夹下即可,它会自动读取这个文件夹下面的插件并加载。
打开控制台
在普通玩家的使用过程中,大部分情况并不需要看到控制台,玩家不需要了解插件背后做了什么,但是对于作者来说,控制台的作用非常大,在这里可以看到游戏本身输出的日志,插件也可以输出日志,方便我们对错误进行排查。
BepInEx启动一次之后,会在BepInEx/config文件夹下生成一个叫BepInEx.cfg的文件,这个就是BepInEx的配置文件了。打开配置文件(推荐使用VSCode、Notepad++等高级文本编辑器),在[Logging.Console]条目下,我们将Enabled = false改为Enabled = true,这样就开启了控制台的显示,打开游戏,即可看到控制台。
BepInEx控制台
有什么问题或者建议可以在评论区评论或者与我私信交流。