ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

BepInEx:免费的 Unity 游戏 Mod 插件框架,5 分钟跑起来

BepInEx:免费的 Unity 游戏 Mod 插件框架,5 分钟跑起来 BepInEx免费的 Unity 游戏 Mod 插件框架5 分钟跑起来【免费下载链接】BepInExUnity / XNA game patcher and plugin framework项目地址: https://gitcode.com/GitHub_Trending/be/BepInExBepInEx 是一个免费的 Unity 游戏 Mod 插件框架把插件 DLL 丢进 plugins 文件夹它就能在游戏启动前自动完成插件发现、依赖排序、配置与日志。你不用碰游戏一行代码也不用自己写注入和加载逻辑。先看看你的环境行不行 玩家视角它决定了你能不能给手里的 Unity 游戏装 Mod装好之后所有插件都挂在这套地基上。‍ 开发者视角它是你写插件的运行时配置绑定、日志、依赖声明这些脚手架全都内置你只管写业务逻辑。兼容范围来自 README.md 的兼容性表运行时WindowsmacOSLinuxUnity Mono✔️✔️✔️Unity IL2CPP✔️❌✔️.NET / XNA含 FNA、MonoGame✔️走 Mono走 Mono⚠️ 注意目前只有 Unity Mono 有稳定发布版IL2CPP 要走 Bleeding Edge 构建。和 MelonLoader 这类同类加载器相比BepInEx 的差异在于它把插件发现、依赖图排序、统一配置和统一日志做成了标准件第三方 Mod 基本都按它的契约来写。三分钟大白话它到底在干什么 把它想成社区快递站的收货流程。每天早上快递车游戏主程序到场但站里有个规矩站长Chainloader会先拦下车逐件核对包裹——有没有面单[BepInPlugin]属性里的 GUID、名称、版本号面单格式对不对是不是寄给这个站的[BepInProcess]进程过滤有没有包裹声明必须在我之前签收[BepInDependency]站长按拓扑排序排出派送顺序。核对完、排序完包裹全部上架才放行让站点开门营业游戏真正初始化。任何一步不合规则这件包裹被拒收理由写进台账日志。整个流程在 BaseChainloader.cs 里能逐行对上DiscoverPlugins是数包裹ModifyLoadOrder是排派送顺序LoadPlugins是真正签收。东西都放在游戏根目录的BepInEx文件夹里路径常量定义见 Paths.cs游戏根目录/ ├── BepInEx/ │ ├── core/ # 框架核心 DLLDoorstop 的加载入口也在这 │ ├── plugins/ # 你的插件 DLL 放这里 │ ├── patchers/ # 预加载修补程序 │ ├── config/ # 各插件的 .cfg 配置文件核心配置是 BepInEx.cfg │ └── cache/ # 插件发现结果的缓存 └── LogOutput.log # 启动日志排障第一现场5 分钟上手使用版装 Mod下载 Unity Mono 稳定版压缩包IL2CPP 游戏去 Bleeding Edge 构建页拿解压。把解压出来的BepInEx整个文件夹拷到游戏 exe 所在目录。把你的插件 DLL 放进BepInEx/plugins。启动游戏打开根目录的LogOutput.log看到 Chainloader startup complete 就说明全链路通了。自建版从源码编译克隆仓库git clone https://gitcode.com/GitHub_Trending/be/BepInEx装好 .NET 6.0 或更高构建脚本基于 CakeBuild硬性要求。Linux/macOS 在仓库目录运行./build.sh --target CompileWindows 运行build.cmd --target Compile。要可分发包就换--target MakeDist产物在bin/dist要再打成压缩包用--target Publish。各目标的具体说明见 docs/BUILDING.md。关键配置与进阶技巧target_assemblydoorstop_config_mono.iniDoorstop 拦截后去加载哪个程序集。标准值是BepInEx/core/BepInEx.Unity.Mono.Preloader.dll。改了路径或手动挪过框架文件夹之后这里没同步就是什么都不会发生的头号原因。dll_search_path_override同一文件让 Mono 在找程序集前先查指定目录。默认值BepInEx/core专门救原游戏Managed目录被裁剪、找不到 mscorlib 的情况要加多个目录用分号隔开。Logging.Disk段BepInEx/config/BepInEx.cfg磁盘日志总开关和输出级别。排查崩溃时把InstantFlushing设为true每条日志立即落盘性能有代价开多个游戏实例调试时调大ConcurrentFileLimit默认 5否则新实例的日志文件会被拒发。[BepInDependency]和[BepInProcess]Attributes.cs写插件时在类上声明。依赖可以是HardDependency缺失直接拒载或SoftDependency缺了就降级跑带版本范围时注意 BepInEx 6 里裸版本号按精确匹配处理想要最低版本语义要写1.2.0。[BepInProcess(GameName)]限定插件只在指定进程名启动。插件骨架继承 BaseUnityPlugin.cs 即可构造时自带Logger和Config两个开箱即用的成员。出问题时排障速查现象根因解决游戏能启动但插件一个没加载Doorstop 没生效或target_assembly指向了不存在的程序集检查 ini 里enabled true且target_assembly指向BepInEx/core/BepInEx.Unity.Mono.Preloader.dll启动报找不到 mscorlib / 系统程序集原游戏Managed目录被裁剪Mono 缺核心库保持dll_search_path_override BepInEx/core让框架目录优先于 Managed 被搜索同 GUID 插件放了两份只加载了一份同 GUID 去重时只保留版本号最高的另一份被跳过删掉旧 DLLplugins 目录里只留一份插件换个游戏就不加载带[BepInProcess]的插件只在属性名匹配当前 exe 进程名时运行核对属性里的进程名和实际 exe 文件名去掉 .exe是否一致日志里提示 targets a wrong version of BepInEx插件是用旧大版本的 BepInEx 编译的大版本不兼容找该插件的新版本或降级框架到对应大版本⚠️ IL2CPP 游戏找不到稳定版下载官方只有 Unity Mono 出稳定版IL2CPP 属于实验性质使用 Bleeding Edge 构建macOS IL2CPP 组合目前直接不支持写在最后一句话定位BepInEx 就是把插件放哪、谁先跑、坏了怎么查这些脏活全收走的 Unity Mod 地基你的插件只管写功能本身。下一步建议先通读 docs/BUILDING.md 弄清三个构建目标的产物差异再顺着 BepInEx.Core/Bootstrap/ 里 Chainloader 的源码走一遍加载流程配合 BepInEx.Core/Contract/ 看属性契约写插件时就不会被加载规则绊住。【免费下载链接】BepInExUnity / XNA game patcher and plugin framework项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表