首页 / 资讯中心 / 文章详情

BepInEx 实用指南:从选版本到给 Unity 游戏装上第一个插件

BepInEx 实用指南:从选版本到给 Unity 游戏装上第一个插件 ★ FEATURED ARTICLE
BepInEx 实用指南从选版本到给 Unity 游戏装上第一个插件【免费下载链接】BepInExUnity / XNA game patcher and plugin framework项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx你想给 Unity 游戏加个 HUD 或者跳过开场动画但不想动游戏的一个字节——这就是 BepInEx 插件框架要解决的问题。它是一个跑在 Unity Mono、Unity IL2CPP 和 .NET 游戏里的插件加载器把 dll 丢进指定目录游戏启动时自动加载并执行你的代码插件出问题时删掉那个目录就行游戏本体不改动。 BepInEx 是什么不改原文件的运行时插件框架BepInEx 用 Unity Doorstop 在进程启动早期注入预加载器再由 Chainloader 扫描插件目录、按 GUID 解析依赖顺序加载。非侵入式——所有代码运行时加载不写游戏原文件。统一契约——插件实现IPlugin接口并带[BepInPlugin]特性加载器自动识别 GUID 和依赖关系。跨运行时——同一套核心接口覆盖 Unity Mono、Unity IL2CPP、.NET Framework 三种引擎。当前仓库版本是 6.x只有 Unity Mono 有稳定发布IL2CPP 和 .NET 仍处开发阶段各平台支持如下运行时WindowsmacOSLinuxUnity Mono稳定版✔✔✔Unity IL2CPP✔❌✔.NET / XNA✔MonoMono 环境准备与安装从选版本到跑通第一个插件安装前先判断游戏用的是哪种运行时看两个文件就行游戏根目录里有UnityPlayer.dll就是 Unity Mono有GameAssembly.dll就是 Unity IL2CPP.NET 游戏则基于 .NET Framework 运行。按下面 4 步装克隆源码仓库git clone https://gitcode.com/GitHub_Trending/be/BepInEx装好 .NET 6.0 或更高版本的 SDK在仓库目录里执行构建CakeBuild 需要 .NET 6.0./build.sh --target Compile # Linux / macOS build.cmd --target Compile # Windows把bin/dist下对应运行时的发行包解压到游戏根目录最终结构长这样游戏根目录/ ├─ BepInEx/ │ ├─ core/ # 核心 dll含 Preloader │ ├─ patchers/ # 补丁插件 │ ├─ plugins/ # 你自己的插件 dll 放这里 │ ├─ config/ # BepInEx.cfg 和每个插件的 .cfg │ └─ LogOutput.log # 启动后自动生成的运行日志 ├─ doorstop_config.ini # Doorstop 注入配置 ├─ winhttp.dll # Windows 门文件Linux 用 libdoorstop.so └─ 游戏可执行文件Linux 用户不直接依赖 winhttp 注入仓库里带了一个Runtimes/Unity/Doorstop/run_bepinex_mono.sh启动脚本把脚本顶部的executable_name改成游戏二进制名然后./run_bepinex_mono.sh就能带上 BepInEx 启动。验证装好没有看两个现象游戏启动时弹出一个控制台窗口显示 BepInEx 版本号游戏目录多出一个BepInEx/子目录且里面有LogOutput.log文件。⚙️ 关键配置3 个改完就有用的配置项启动行为由doorstop_config.ini控制放在游戏根目录[General] enabled true target_assembly BepInEx\core\BepInEx.Unity.Mono.Preloader.dllenabled是整个 Doorstop 注入的总开关改成 false 游戏就走干净启动、BepInEx 完全不加载这是排查插件冲突时最常用的开关。target_assembly指向预加载器的 dllMono 游戏是BepInEx.Unity.Mono.Preloader.dllIL2CPP 游戏换成BepInEx.Unity.IL2CPP.dll一般不用改。运行时行为由BepInEx/config/BepInEx.cfg控制首次启动自动生成[Logging.Disk] Enabled true LogLevels Fatal, Error, Warning, Message, InfoLogLevels决定哪些级别的日志会写进LogOutput.log加上Debug就能在日志里看到每次加载了哪些程序集、每个 patch 打在哪是排查插件问题时的第一站。 常见问题排查从启动失败到插件没加载现象游戏正常启动但没弹控制台、BepInEx/目录也没生成。可能原因Doorstop 注入没生效最常见是doorstop_config.ini里enabled没开或者门文件Windows 的winhttp.dll、Linux 的libdoorstop.so和 ini 不在同一目录。解决确认enabled true门文件和 ini 一起放在游戏根目录。现象控制台有 BepInEx 启动日志但你的插件没生效。可能原因dll 没放对位置或者插件声明的BepInDependency依赖没装。解决把 dll 移到BepInEx/plugins/打开BepInEx/LogOutput.log搜索插件 GUID 或Error关键字日志里会明确告诉你哪个依赖缺失。现象控制台窗口一闪就关看不清输出。解决在BepInEx.cfg里把[Logging.Console]段的PreventClose改成true窗口就会保留到游戏退出。 装好之后做什么BepInEx 的价值在于把改游戏这件事从动原文件降级成扔 dll 进目录插件坏了直接删游戏本体一个字节都不变。下一步去插件社区挑一个 UI 类或画质类插件把 dll 丢进BepInEx/plugins/重启游戏LogOutput.log里能看到它的加载日志就算成功。写自己的插件时参考Runtimes/Unity/BepInEx.Unity.Mono/BaseUnityPlugin.cs看官方基类结构再配一份BepInEx.cfg里LogLevels加 Debug 的调试环境Unity 插件开发入门这条路就通了。【免费下载链接】BepInExUnity / XNA game patcher and plugin framework项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站