
1. 項目概述為什么你需要BepInEx如果你是一個Unity游戲的深度玩家或者是一個對游戲模組Mod開發感興趣的開發者那么“BepInEx”這個名字對你來說應該不陌生。簡單來說BepInEx是一個用于Unity游戲的插件加載與運行時框架。它的核心價值在于為那些沒有官方模組支持的游戲提供了一個穩定、強大且相對安全的“后門”讓玩家和開發者能夠注入自定義代碼、修改游戲邏輯、添加新功能從而極大地擴展游戲的可玩性和生命周期。你可能已經厭倦了游戲里某個不合理的設定或者想添加一個夢寐以求的功能又或者只是想看看游戲底層是如何運作的。無論是《英靈神殿》Valheim里那些改變游戲體驗的Mod還是《雨中冒險2》Risk of Rain 2里那些眼花繚亂的額外內容背后大多都有BepInEx的身影。它就像一個萬能鑰匙為你打開了修改和定制Unity游戲的大門。本指南的目的就是幫你繞過那些繁瑣的、容易出錯的配置步驟用最快、最穩的方式將BepInEx部署到你的目標游戲中讓你能立刻開始自己的模組之旅或開發工作。2. 核心需求解析部署BepInEx前必須想清楚的事在興奮地下載文件之前有幾個關鍵問題必須理清。這決定了你后續所有操作的路徑和可能遇到的坑。2.1 目標游戲與Unity版本匹配BepInEx并非一個放之四海而皆準的通用解決方案它的兼容性高度依賴于目標游戲所使用的Unity引擎版本。BepInEx的核心是一個“注入器”它需要將自身代碼“注入”到游戲進程的特定位置。不同版本的Unity其運行時環境、內存布局、程序集結構都有差異。因此為Unity 2019.4開發的BepInEx版本很可能無法在基于Unity 2021.3的游戲上運行反之亦然。如何確認查看游戲官方信息在Steam商店頁面、游戲官網或Wiki上有時會注明使用的引擎版本。使用工具分析可以借助如UnityEX或AssetStudio等工具打開游戲資源文件查看其內部信息。社區經驗最直接有效的方法。去該游戲的模組社區如Nexus Mods, GitHub, 相關的Discord頻道查找通常已經有先驅者驗證了兼容的BepInEx版本。直接使用社區推薦的版本能避免99%的兼容性問題。注意盲目使用最新版的BepInEx不一定是最好的選擇。對于老游戲使用與其Unity版本時代相近的BepInEx穩定版往往比追求新版本更可靠。2.2 32位x86與64位x64抉擇這是一個經典的陷阱。很多玩家下載了BepInEx解壓運行游戲卻發現沒有任何效果控制臺也沒彈出來問題很可能就出在這里。你需要明確你的游戲主程序通常是GameName.exe或類似名稱是32位還是64位應用程序。判斷方法任務管理器運行游戲打開任務管理器在“詳細信息”或“進程”選項卡中找到游戲進程查看“平臺”列。如果顯示“32位”你就需要x86版本的BepInEx如果顯示“64位”則需要x64版本。文件屬性右鍵點擊游戲主exe文件 - 屬性 - 兼容性選項卡。如果看到“以便攜模式運行此程序”或類似的舊版選項通常是32位。更準確的方法是使用第三方工具如Dependencies原名Dependency Walker打開exe查看。社區經驗再次強調模組頁面或安裝說明里幾乎一定會寫明。BepInEx的發布包通常會區分BepInEx_x86和BepInEx_x64或者在一個壓縮包里包含兩個文件夾。用錯版本會導致注入失敗游戲可能正常啟動但BepInEx完全不起作用。2.3 明確你的目的使用模組 vs. 開發插件你的角色決定了你的配置復雜度和關注點。模組使用者你的主要目標是讓BepInEx運行起來然后正確安裝.dll或.zip格式的模組文件。你的配置重點在于BepInEx.cfg日志級別、控制臺開啟和doorstop_config.ini確保注入成功。你更關心穩定性和易用性。插件開發者除了使用者的一切你還需要配置開發環境。這包括設置Visual Studio或Rider項目引用正確的BepInEx庫BepInEx.Core.dll,0Harmony.dll等配置生成后事件將編譯的dll自動拷貝到游戲的BepInEx/plugins目錄。你的配置重點還包括BepInEx/patchers目錄的使用如果你需要更底層的補丁以及理解如何調試注入后的游戲進程。本指南會同時涵蓋這兩條路徑的關鍵節點但會以“快速部署使用”為主線“開發配置”作為延伸部分。3. 工具選型與文件準備工欲善其事必先利其器。正確的文件是成功的一半。3.1 獲取官方發布文件永遠優先從BepInEx的官方GitHub倉庫發布頁面下載https://github.com/BepInEx/BepInEx/releases。這里能確保你獲得的是經過測試的、干凈的、無惡意代碼的版本。避免從不明來源的網盤或第三方站點下載以防文件被篡改或捆綁垃圾軟件。在發布頁面你會看到幾種類型的文件BepInEx_x64_VERSION.zip64位通用版本。BepInEx_x86_VERSION.zip32位通用版本。BepInEx_Unity_VERSION.zip針對特定Unity版本預編譯的版本如Unity 5, 2017, 2018等兼容性通常更好如果有對應你游戲Unity版本的包優先選用。Source code源代碼開發者需要普通用戶無需下載。下載與你游戲位數和Unity版本匹配的ZIP包即可。3.2 核心目錄結構解析解壓下載的ZIP包你會看到類似如下的結構以x64版本為例BepInEx/ ├── core/ # BepInEx核心運行時庫如 BepInEx.Core.dll, 0Harmony.dll ├── patchers/ # 【開發者】放置繼承自BaseUnityPatcher的補丁器DLL ├── plugins/ # 【核心】放置所有插件DLL的文件夾模組大多放這里 ├── config/ # 插件的配置文件目錄每個插件會生成自己的.cfg文件 ├── cache/ # BepInEx內部緩存勿動 ├── LogOutput.log # 運行日志如果配置了文件輸出 ├── BepInEx.cfg # 【核心】BepInEx自身的配置文件 ├── doorstop_config.ini # 【核心】注入器配置文件至關重要 ├── winhttp.dll # 【核心】注入觸發器x64版 └── version.dll # 【核心】注入觸發器x86版或x64的備選方案對于初次部署你需要重點關注的是整個BepInEx文件夾、winhttp.dll/version.dll以及那兩個配置文件。3.3 輔助工具推薦MelonLoader對于某些游戲尤其是較新的Unity版本游戲MelonLoader可能是比BepInEx更流行或兼容性更好的選擇。但在你決定之前務必查看游戲模組社區的主流選擇。兩者原理相似但互不兼容。Unity Explorer或BepInEx Configuration Manager這些是作為BepInEx插件存在的運行時工具可以在游戲內提供一個圖形界面讓你實時查看游戲對象、修改組件屬性、管理插件配置等對于開發和調試模組極其有用。但它們需要在BepInEx成功運行后才能安裝。dnSpy或ILSpy.NET反編譯工具。當你想深入研究游戲原有代碼邏輯尋找掛鉤點Hook Point時這些工具不可或缺。它們能讓你查看游戲程序集Assembly-CSharp.dll等的源代碼雖然可能被混淆。4. 標準部署流程步步詳解現在我們進入實戰環節。假設你的游戲安裝在D:\Steam\steamapps\common\MyUnityGame。4.1 第一步定位游戲根目錄并備份這是鐵律。在放入任何文件前備份你的游戲根目錄或者至少備份游戲原生的主exe文件和UnityPlayer.dll等核心文件。簡單的復制粘貼整個游戲文件夾即可。這能在配置出錯導致游戲無法啟動時讓你瞬間回滾到原始狀態。找到你的游戲根目錄它應該包含MyUnityGame.exe或類似名稱、UnityPlayer.dll、MyUnityGame_Data文件夾等。4.2 第二步放置BepInEx文件將下載并解壓得到的整個BepInEx文件夾復制到游戲根目錄。現在路徑應該是D:\Steam\steamapps\common\MyUnityGame\BepInEx。將解壓得到的winhttp.dll對于64位游戲或version.dll對于32位游戲也復制到游戲根目錄與主exe文件同級。這里有一個關鍵細節winhttp.dll是默認的注入觸發器。它的原理是利用Windows系統的DLL搜索順序劫持。當游戲啟動時系統會嘗試加載winhttp.dll而我們提供的這個DLL實際上是一個“冒名頂替者”它會在被加載時執行代碼將真正的BepInEx核心注入到游戲進程。如果游戲本身或其反作弊系統如EasyAntiCheat, BattlEye加載了真正的winhttp.dll可能會導致沖突或注入失敗。此時可以嘗試改用version.dll作為觸發器將文件重命名或使用對應的版本。4.3 第三步關鍵配置文件調優默認配置通常可以工作但為了更好的體驗和排查問題我們調整兩個核心文件。1. 配置doorstop_config.ini這個文件控制注入過程。用記事本或其他文本編輯器打開它。[General] enabledtrue ; 是否啟用Doorstop注入器false則完全禁用BepInEx targetAssemblyBepInEx\core\BepInEx.Preloader.dll ; BepInEx預加載器的路徑一般不用改 doorstopTypedefault ; 注入類型默認即可 [Unity] ; 對于Unity游戲這個區域很重要 redirectOutputLogtrue ; 是否將Unity的Debug.Log輸出重定向到BepInEx控制臺建議true方便調試對于大多數情況保持默認即可。如果你遇到注入問題可以嘗試將doorstopType改為mono或il2cpp取決于游戲使用的腳本后端這通常也需要社區經驗來確認。2. 配置BepInEx.cfg這個文件控制BepInEx自身的行為。打開BepInEx\config目錄下的BepInEx.cfg。[Logging] # 控制臺設置 ConsoleEnabled true # 是否啟用彈出式控制臺窗口強烈建議設為true這是你看日志和調試信息的主要窗口 ConsoleOutRedirect true # 是否將控制臺輸出同時重定向到標準輸出stdout ShowLogInConsole true # 是否在控制臺中顯示日志消息 [Logging.Disk] # 磁盤日志設置 Enabled true # 是否將日志寫入文件 LogLevels All # 寫入文件的日志級別All表示全部寫入 DisplayedLogLevels Fatal, Error, Warning, Message, Info # 在控制臺中顯示的日志級別可以過濾掉過于詳細的Debug信息確保ConsoleEnabled true這樣游戲啟動時會彈出一個黑色的控制臺窗口所有BepInEx和插件的日志都會在這里打印是排查問題的生命線。4.4 第四步首次運行與驗證像往常一樣通過Steam或直接雙擊游戲主exe啟動游戲。如果配置正確你應該會先看到一個黑色的控制臺窗口彈出滾動著一些初始化信息然后游戲窗口才出現。進入游戲主菜單或場景后觀察控制臺。如果看到類似[Info : BepInEx] Loading [YourModName] 1.0.0這樣的信息恭喜你BepInEx部署成功檢查游戲根目錄應該新生成了BepInEx\config下的一些插件配置文件以及BepInEx\plugins目錄如果是空的沒關系因為你還沒裝插件。如果游戲啟動但沒有控制臺彈出或者啟動即崩潰請跳轉到第6章“常見問題排查”。5. 插件/模組的管理與進階配置BepInEx成功運行后你的模組世界才剛剛開始。5.1 安裝與管理插件絕大多數為BepInEx開發的插件都是一個單獨的.dll文件。安裝極其簡單將下載的插件.dll文件放入BepInEx\plugins文件夾。可以在此文件夾內創建子文件夾來分類管理插件BepInEx會自動遞歸搜索。啟動游戲在控制臺日志中確認插件被加載。有些模組作者會提供包含plugins、config等文件夾的壓縮包直接合并到游戲根目錄的BepInEx文件夾下即可。5.2 理解插件依賴鏈復雜的模組可能有依賴關系。例如插件A需要插件B提供的某些API才能運行。這些依賴通常以“BepInEx依賴項”的形式聲明在插件的元數據中。如果缺少依賴控制臺會明確報錯例如Failed to load [PluginA] because dependency [PluginB] was not found。解決方案就是安裝所有必需的依賴插件。通常模組頁面會明確列出依賴項并提供下載鏈接。常見的底層依賴包括BepInEx.Harmony如果插件使用了Harmony庫進行代碼修補這是非常常見的模組技術可能需要這個。MMHOOK (MonoMod.RuntimeDetour)一些插件用于掛鉤Unity事件。 這些依賴插件同樣放在BepInEx\plugins目錄下。5.3 配置插件行為每個插件在第一次被加載后通常會在BepInEx\config目錄下生成一個以插件GUID命名的.cfg文件例如com.author.modname.cfg。這個文件包含了該插件所有可配置的選項如開關、快捷鍵、數值參數等。你可以直接編輯這個文件來修改配置但更推薦的方法是使用BepInEx Configuration Manager插件。安裝這個插件后在游戲內按F1鍵通常是這個快捷鍵可以調出一個圖形化的配置菜單在這里你可以實時修改所有已安裝插件的設置無需重啟游戲即可生效取決于插件實現。5.4 為開發者搭建簡易開發環境如果你想從使用者變為創造者需要以下步驟創建類庫項目在Visual Studio中新建一個“.NET Framework”或“.NET Standard”類庫項目。項目目標框架版本最好與游戲使用的.NET版本匹配對于較新的Unity游戲可能是.NET Framework 4.7.1或.NET Standard 2.0/2.1。引用BepInEx庫從你游戲目錄的BepInEx\core文件夾中添加對BepInEx.Core.dll和0Harmony.dll如果你要用Harmony的引用。不要從NuGet獲取必須使用游戲附帶的版本以確保API完全匹配。編寫插件主類創建一個繼承自BaseUnityPlugin的類。使用[BepInPlugin]屬性聲明插件的GUID、名稱和版本。在Awake()或Start()方法中編寫你的初始化代碼。using BepInEx; using BepInEx.Logging; using HarmonyLib; [BepInPlugin(PluginGUID, PluginName, PluginVersion)] public class MyAwesomePlugin : BaseUnityPlugin { public const string PluginGUID “com.yourname.awesomeplugin”; public const string PluginName “My Awesome Plugin”; public const string PluginVersion “1.0.0”; internal static ManualLogSource Log; private void Awake() { Log Logger; Log.LogInfo($“{PluginName} {PluginVersion} is loading!”); // 應用Harmony補丁 Harmony.CreateAndPatchAll(typeof(MyPatches)); } }配置生成后事件為了讓編譯的dll自動復制到游戲插件目錄在項目屬性 - 生成事件 - 后期生成事件命令行中添加copy /Y “$(TargetPath)” “D:\Steam\steamapps\common\MyUnityGame\BepInEx\plugins\$(TargetFileName)”將路徑替換為你自己的游戲路徑。編譯與測試編譯項目dll會自動復制到插件目錄。啟動游戲在控制臺查看你的插件日志。6. 常見問題與排查技巧實錄即使按照指南操作也可能會遇到問題。以下是典型問題及解決思路。6.1 游戲啟動無反應或閃退無控制臺這是最令人頭疼的情況說明注入階段就失敗了。檢查位元確認你使用的BepInEx版本x86/x64與游戲完全匹配。這是最常見的原因。檢查防作弊如果游戲帶有BattlEye、EasyAntiCheatEAC等反作弊系統BepInEx很可能無法運行甚至會導致封號。在多人或官方服務器游戲中使用模組前務必查閱游戲規則和模組作者警告。部分游戲有專門的“模組服務器”或“創意模式”允許使用。更換注入觸發器嘗試將winhttp.dll重命名為winhttp.dll.bak然后將version.dll如果存在復制一份并重命名為winhttp.dll或者直接使用version.dll作為主觸發器確保doorstop_config.ini中的相關設置正確但通常不需要改。檢查殺毒軟件/防火墻有時它們會誤殺或阻止winhttp.dll等文件。將游戲目錄添加到白名單。查看Windows事件查看器在Windows搜索“事件查看器”打開“Windows日志”-“應用程序”查看游戲崩潰時刻的錯誤記錄可能包含有價值的線索。6.2 控制臺彈出但游戲卡死或黑屏注入成功但BepInEx或某個插件在初始化時崩潰。查看控制臺最后幾行錯誤信息這是最直接的線索。錯誤信息通常會指向某個具體的插件或BepInEx組件。移除所有插件清空BepInEx\plugins文件夾只保留BepInEx核心。如果游戲能正常啟動說明問題出在某個插件上。然后采用“二分法”每次放回一半插件逐步定位問題插件。檢查插件依賴確認問題插件所需的所有依賴都已正確安裝。檢查插件兼容性確認插件版本與你的游戲版本、BepInEx版本兼容。老插件可能不兼容新版游戲或BepInEx。6.3 插件已加載但功能不生效游戲和控制臺都正常但模組功能沒出現。檢查插件配置文件有些插件默認是禁用狀態或者某些功能需要手動在配置文件中開啟。去BepInEx\config下找到對應插件的cfg文件檢查。查看插件日志在控制臺里找到該插件加載時的日志行看是否有“初始化成功”或“注冊了XX功能”的消息。也可能有警告信息提示功能未啟用。快捷鍵沖突很多插件的功能通過快捷鍵觸發如按F5打開菜單。確認你沒有其他軟件如錄屏工具、輸入法占用了相同的快捷鍵。游戲模式限制某些模組功能可能只在特定游戲模式如單人、創意模式下生效。6.4 控制臺日志刷屏或過于冗長這會影響性能也讓你難以找到關鍵錯誤。修改BepInEx.cfg調整DisplayedLogLevels選項。例如設置為Fatal, Error, Warning, Message可以過濾掉Info和Debug級別的瑣碎信息。禁用特定插件的日志有些插件有自己的日志開關在其配置文件中尋找。6.5 更新游戲或BepInEx后模組失效游戲更新或BepInEx框架更新后原有的插件可能因API變化而失效。等待模組作者更新這是最穩妥的方式。關注模組發布頁面的更新。回滾游戲版本如果Steam游戲支持可以回滾到之前的版本。謹慎更新BepInEx除非新版本修復了你必須的問題或者你使用的插件要求新版否則對于穩定運行的環境不必追求最新版的BepInEx。7. 性能調優與最佳實踐一個穩定、高效的模組環境需要一些維護。7.1 管理插件數量“插件越多越好”是個誤區。每個插件都會占用內存和CPU周期尤其是在游戲的每一幀Update循環中執行操作的插件。只安裝你真正需要和經常使用的插件。定期清理BepInEx\plugins文件夾。7.2 關注插件質量從Nexus Mods等知名社區下載模組時關注文件的“下載量”、“點贊數”和“最近更新日期”。活躍維護、用戶基數大的模組通常更穩定。仔細閱讀模組頁面的“需求”、“沖突”和“安裝說明”部分。7.3 善用配置文件備份當你配置好一套滿意的插件和參數后備份整個BepInEx文件夾或者至少是config和plugins文件夾。這在你重裝游戲、更換電腦或嘗試新模組把環境搞亂后能快速恢復到你熟悉的狀態。7.4 理解Harmony補丁的代價許多強大模組的核心技術是Harmony它允許你在運行時修改游戲原有代碼。雖然強大但不當的補丁例如在性能敏感的循環方法上打補丁會顯著降低游戲性能。作為使用者如果感覺裝了某個模組后游戲變卡可以嘗試禁用該模組來確認。7.5 保持環境清潔避免手動修改游戲原生的程序集文件如Assembly-CSharp.dll。BepInEx的設計理念就是非侵入式的所有修改都應通過插件和Harmony補丁來完成。直接修改原生dll會導致兼容性極差且無法與其他模組共存。