• 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控制台

    有什么问题或者建议可以在评论区评论或者与我私信交流。

  • 相关阅读:
    C/C++图书信息管理系统水电管理信息系统
    【超详细】手把手教你STM32上报温湿度到腾讯云
    2022_08_10_106期__二叉树
    堆叠、集群技术
    MySQL MVCC工作原理
    cubemx stm32 lu90614模块 人体温度检测模块 可以替代温枪 驱动代码
    【Gazebo要素02】系统构成
    【IC卡】终极版复卡器操作方法 ID卡读取方法
    acwing 最大数
    k8s--基础--6.1--环境搭建--多master高可用集群
  • 原文地址:https://blog.csdn.net/m0_69824302/article/details/127938356