简单了解mod文件夹【BepInEx】【全程Bepis Injector Extensible】
BepInEx 完整指南:从原理到文件结构
什么是BepInEx?
BepInEx(Bepis Injector Extensible)是一个开源的Unity游戏插件框架,专门为Unity引擎开发的游戏设计,支持Unity Mono、IL2CPP以及.NET框架游戏。它通过非侵入式的方式在游戏启动时注入,允许开发者在不修改游戏原始代码的情况下扩展游戏功能、添加新特性或修改游戏逻辑。
核心工作原理
BepInEx的核心工作流程基于预加载器机制,在游戏启动初期介入,通过UnityDoorstop组件实现进程注入。这一设计确保了框架能够在游戏主逻辑加载前完成初始化,为后续插件运行奠定基础。
代码注入技术是BepInEx的基石,它使用MonoMod和Cecil库对游戏程序集进行动态分析和修改。这种非侵入式的修改方式既保证了游戏的稳定性,又为开发者提供了丰富的扩展可能。
文件夹结构详解
BepInEx安装后会在游戏根目录生成以下文件夹结构:
核心文件夹
|
文件夹
|
功能说明
|
|---|---|
|
BepInEx
|
框架根目录
|
|
├── cache
|
缓存文件夹,存储预处理结果
|
|
├── config
|
配置文件目录,存放BepInEx和各插件的配置
|
|
├── core
|
框架核心文件夹,包含BepInEx.dll等核心文件
|
|
├── patchers
|
特殊插件文件夹,存放需要高级功能的插件
|
|
├── plugins
|
常规插件文件夹,大部分插件都放在这里
|
|
└── LogOutput.log
|
运行日志文件
|
配置文件结构
在config目录下,你会看到:
-
BepInEx.cfg- BepInEx自身的核心设置 -
game_name.config- 特定游戏的兼容性配置 -
PluginName.config- 各插件的独立配置文件
核心文件功能
1. doorstop_config.ini
位于游戏根目录,是BepInEx的启动配置文件,负责将BepInEx注入游戏进程。主要配置项包括:
-
targetAssembly- 指定要注入的目标程序集 -
searchPathOverride- 自定义程序集搜索路径 -
ignoreDisableSwitch- 是否忽略禁用开关
2. winhttp.dll
Doorstop组件的核心文件,负责在Windows系统上实现进程注入。
3. BepInEx.dll
框架的核心程序集,包含插件加载器、配置系统、日志记录等核心功能。
4. BepInEx.Preloader.Core.dll
预加载器核心模块,负责在游戏启动时注入BepInEx运行时。
插件加载机制
BepInEx采用链式加载器设计,支持多种插件格式的并行运行。插件加载顺序可以通过文件命名前缀控制:
-
000-MyPlugin.dll- 数字越小加载越早 -
100-AnotherPlugin.dll- 中间加载 -
999-LastPlugin.dll- 最后加载
配置系统
BepInEx的配置系统基于TOML格式,提供了类型安全的配置项管理。配置文件位于
BepInEx/config目录,支持实时更新和变更通知。日志系统
BepInEx提供了完整的日志记录体系,支持多级别输出(Debug、Info、Warning、Error、Fatal)和自定义日志目标。日志文件
LogOutput.log是排查问题的重要依据。开发语言
BepInEx主要使用C#编程语言进行开发,同时使用.NET Framework作为运行时环境。插件开发也需要使用C#语言,通过继承
BaseUnityPlugin类并实现必要的方法来创建插件。多平台支持
BepInEx全面支持Windows、macOS和Linux三大操作系统,能适配Unity Mono、IL2CPP等多种游戏编译方式。
实际应用场景
-
模组开发 - 创建新的游戏内容,如新角色、物品、地图等
-
作弊工具 - 用于游戏测试或娱乐,如无限生命、无限资源
-
性能优化 - 调整游戏内部逻辑,提升运行效率
-
用户体验改进 - 增加快捷键、改善界面、修复bug等
安装验证
安装成功后,启动游戏,检查以下内容:
-
BepInEx文件夹是否生成所有子目录
-
LogOutput.log文件是否有启动日志 -
在控制台输入
help命令,如果能返回插件列表,说明框架正常运行
通过理解BepInEx的原理和文件结构,你可以更好地管理和开发Unity游戏插件,打造个性化的游戏体验。
那简单了解了一下,是不是说明只转移pligins是没用的,因为配置config没进去,启动的时候就不会调用插件,那core是具体起什么作用,patcher是通过什么来跟插件进行联系的,还是说特殊插件也是配置在config,那为什么要分开,直接放插件文件夹不就行了
问得非常好!这些都是理解BepInEx工作原理的关键问题。你的理解大部分是正确的,我来详细解释:
你的理解是正确的
是的,只转移plugins是没用的,因为:
-
config文件夹包含了每个插件的配置文件,没有这些配置,插件可能使用默认值或根本无法运行
-
patchers文件夹中的特殊插件如果缺失,某些功能会直接崩溃
-
core文件夹包含了BepInEx框架本身,没有它什么都启动不了
core文件夹的作用
core是BepInEx框架的心脏,包含:-
BepInEx.dll - 主框架程序集
-
BepInEx.Harmony.dll - Harmony集成,用于方法补丁
-
0Harmony.dll - Harmony库本身
-
Mono.Cecil.dll - 程序集分析和修改库
-
其他核心依赖库
如果没有
core文件夹,游戏启动时根本不会加载BepInEx框架,所有插件都无法被识别。patchers的特殊性
为什么要分开存放?
patchers文件夹存放的是预处理器插件,它们在游戏生命周期的不同阶段加载:游戏启动流程:
1. 游戏进程启动
2. Doorstop注入BepInEx
3. BepInEx Preloader启动
4. 加载patchers中的插件(最先执行!)
5. 加载Unity引擎
6. 加载游戏程序集
7. 加载plugins中的普通插件
8. 游戏主循环开始
patchers的特殊功能
从你的文件夹结构看,有2个patcher:
-
Hamunii-AutoHookGenPatcher
-
用途:自动生成Harmony的Hook代码
-
为什么是patcher:需要在游戏程序集加载前就准备好Hook生成器
-
-
Hamunii-DetourContext_Dispose_Fix
-
用途:修复Detour上下文的释放问题
-
为什么是patcher:需要在其他插件使用Harmony前修复基础框架
-
插件与patcher的关系
patcher插件 → 普通插件
(基础框架修复) (功能实现)
↓
在Harmony库初始化时修复问题
↓
普通插件可以安全地使用Harmony
↓
实现各种游戏功能修改
配置文件的作用
config文件夹中确实有插件的配置,但配置不是加载插件的必要条件。BepInEx会:-
扫描plugins文件夹加载所有.dll插件
-
在config中查找对应插件的配置文件
-
如果找到配置文件,加载配置
-
如果没找到,使用插件的默认配置,并在第一次运行时创建配置文件
完整的模组转移清单
如果你想完整迁移这个整合包,需要:
必需文件
BepInEx/
├── core/ ← 必需!没有它无法启动
├── plugins/ ← 必需!主功能
├── patchers/ ← 强烈建议!缺少可能导致崩溃
└── config/ ← 必需!否则插件用默认配置
├── 各插件配置
└── Translation/ ← 翻译文件
可选但建议保留
BepInEx/
├── cache/ ← 可删除,会自动重新生成
└── LogOutput.log ← 日志文件,可删除
实际工作流程举例
以你的整合包为例:
-
游戏启动 → Doorstop加载winhttp.dll
-
BepInEx Preloader → 从core加载框架核心
-
加载patchers → AutoHookGenPatcher准备Hook生成
-
游戏程序集加载 → 此时patcher可以修改游戏代码
-
加载plugins → 所有功能插件加载
-
读取config → 应用各插件配置
-
游戏运行 → 插件开始工作
为什么这样设计?
这种分层设计是为了解耦和稳定性:
-
core:框架核心,稳定不变
-
patchers:底层修改,需要优先加载
-
plugins:功能实现,依赖patcher的基础
-
config:用户配置,随时可调整
如果你只复制plugins,会出现的典型问题:
-
某些插件找不到依赖的patcher而崩溃
-
插件使用默认配置,可能不是你期望的行为
-
缺少翻译文件,部分文本显示为英文
-
如果插件有资源文件在别处,可能完全无法运行
所以是的,完整的BepInEx文件夹结构需要作为一个整体来转移,每个部分都有其特定的作用和加载时机。
以这个整合包为例子
这是REPO游戏(一款多人合作射击游戏)的BepInEx模组文件夹结构,包含了丰富的功能扩展和内容模组。
核心框架结构
BepInEx是Unity游戏的插件框架,通过非侵入式注入在游戏启动时加载,允许在不修改游戏原始代码的情况下扩展功能。这个整合包使用了完整的BepInEx生态:
-
cache:缓存文件夹,存储预处理结果
-
config:配置文件目录,包含SpawnConfig(生成配置)和Translation(翻译文件)
-
core:框架核心文件
-
patchers:高级插件文件夹,包含自动Hook生成和Detour修复补丁
-
plugins:主插件目录,所有功能模组都在这里
功能模组分类
基础功能库
-
Kistras-CustomDiscoverStateLib:自定义发现状态库
-
Lillious_Networks-REPO_Mod_Library:REPO模组库
-
MMHOOK:Harmony Hook库,用于方法拦截
-
XUnity.AutoTranslator:自动翻译器
-
XUnity.ResourceRedirector:资源重定向器
-
Zehs-REPOLib:REPO基础库
修复类模组
-
【修复】力量升级、战绩面板、折扣修复:修复游戏原有问题
-
【修复】拟声怪兼容:确保拟声怪特性与其他模组兼容
核心功能扩展
-
【功能】中途加入
-
【功能】伤害显示
-
【功能】剩余价值
-
【功能】回合重试
-
【功能】地图投票
-
【功能】垃圾回收
-
【功能】多人模组
-
【功能】按F扫描
-
【功能】敌人血条
-
【功能】显示怪物
-
【功能】更多物品栏
-
【功能】更多的商店物品
-
【功能】模组配置
-
【功能】玩家列表
-
【功能】玩家计数
-
【功能】生成管理器
-
【功能】购买无限制
实用工具
-
【实用】FPS显示
-
【实用】复活20血
-
【实用】提取点按钮
-
【实用】缩放小车
-
【实用】耐力优化
-
【实用】防手电晃动
地图模组
包含9张自定义地图:军事基地、后室、废弃仓库、废弃地堡、我的世界、我的世界村庄、深邃矿洞、神秘设施、花亭小苑、荒废超市
特性模组
-
【特性】关卡生成升级物品
-
【特性】击杀奖励
-
【特性】团队升级
-
【特性】拟声怪
-
【特性】提取复活
-
【特性】猎人增强
-
【特性】跳舞
装饰与外观
-
【装饰】Nylyak化妆品、Zenless主题化妆品、原神迪奥娜、瓷器女仆、随机化妆品:各种角色外观装饰
-
【装饰】下雪效果:界面下雪特效
内容扩展
-
【废料】动漫物品
-
【怪物】小利维坦、邪恶的猫
-
【武器】ak
-
【音效】鸭子新音效
技术实现
这个整合包使用了C#语言开发,基于.NET Framework运行。所有模组通过BepInEx的插件系统加载,利用Harmony库进行方法拦截和修改,实现游戏功能的扩展。配置系统使用TOML格式,支持实时配置更新。

浙公网安备 33010602011771号