空引用修复

创作者: korCaptain
已更新:2026-07-31 22:50:38
160KB

关于此 MOD

修复了反复出现的NullReferenceException崩溃和日志刷屏问题:ZNetScene.RemoveObjects、AzuCraftyBoxes过期容器、EnemyHud模组冲突、TMP缺失字体警告,以及非拉丁语系文字(韩文/日文/中文/阿拉伯文等)的TMP缺失字形警告。

空引用修复

一小批独立的Harmony补丁,每个都修复一个特定的反复出现的bug——大多是 空引用异常重复的 你在本次游戏剩余时间里的每一帧 一旦触发(日志刷屏并浪费CPU),再加上偶尔出现的资源泄漏缺陷会悄然累积直至引发卡顿或死机。每个补丁针对不同的根本原因,且可能完全独立于其他补丁触发(或不触发)。

查看韩语说明 | 英文描述


🇰🇷 韩语(韩文)

概要

空引用修复是一个集合了多个相互独立的小型 Harmony 补丁的模组。大部分补丁一旦触发,直到会话结束前 每帧反复爆发 空引用异常 负责处理漏洞,其中一部分会悄然累积,最终引发卡顿或冻结的资源泄漏。每个补丁的成因各不相同,且彼此完全独立触发——也就是说,根据所安装的其他模组组合,某些补丁可能一辈子都不会触发。

当前修复5个bug:

  1. 香草瓦尔海姆本身的bug(移除场景对象)
  2. Azucraftyboxes 模组漏洞(制作台附近材料检查)
  3. 与其他修改EnemyHud的模组发生冲突(如EpicMMOSystem等)
  4. 原版英灵神殿 ZSFX 声音对象泄漏(无自毁逻辑——重复播放会导致卡顿/冻结)
  5. 原版英灵神殿 TMP 字体的非拉丁文字(韩语/日语/中文/阿拉伯语等)字形缺失警告(昵称/公会名等会显示为空白)

📦 必需模组 (Dependencies)
模组 版本 必须与否
BepInExPack_Valheim 5.4.2200+ 必需
阿祖合成箱 任意版本 选择 — 仅在安装后该补丁才会激活
史诗MMO系统 任意版本 选择 — 即使未安装,另外两个补丁也能正常运行

无论以何种组合安装此模组都是安全的。即使没有上述模组,也只会静默停用对应补丁,其余补丁仍照常运作。


🐛 错误 1 — ZNetScene.RemoveObjects(原版英灵神殿)

同一帧内某个 网络视图如果该GameObject先通过其他路径被销毁,则原版 ZNetScene.RemoveObjects是那个对象的内部追踪字典(实例还没来得及从)中移除 空引用异常抛出异常。由于这个异常,有问题的entry最终未能从字典中被移除,从而残留下来,结果 下一帧同样发生了相同的异常 — 这个过程会在会话结束前每帧无限重复。

这不是某个特定模组造成的bug,而是英灵神殿引擎本身的老旧缺陷。即使不安装任何模组也可能发生,且怪物生成/消失越频繁的情况(战斗、大规模召唤等)越容易触发。

这个模组的功能: 场景移除对象给 Harmony 终结者 添加补丁以精确捕获该异常,已破坏的(伪空) 网络视图 条目 实例请从那里直接移除。


🐛 错误 2 — AzuCraftyBoxes 制作台条件检查

AzuCraftyBoxes会将在附近看到的所有制作箱 HashSet<Container>持续静态堆放在那里。当箱子被拆除时, 容器.销毁时 通过补丁删除条目,但部分销毁路径(区域/区块卸载等)不经过此方法而直接销毁GameObject,导致已死亡(fake-null) 容器会原样留在套装中。之后在制作菜单打开期间,每帧执行的材料检查逻辑会将该已失效项 获取预制体名称()同时呼叫 空引用异常这会反复发生——直到关闭制作菜单为止。

这个模组的功能仅在安装了AzuCraftyBoxes时才会激活的补丁,用于捕获该异常并破坏 容器 直接从套装中移除物品。


🐛 漏洞 3 — 触碰EnemyHud的模组间冲突(EpicMMOSystem等)

一部分派系/市场类模组会自行 敌人界面.延迟更新 在补丁中 敌人界面.显示界面尝试直接强制重新调用以立即刷新HUD。但如果此重新调用针对的是已登出或已销毁的角色,则该角色的HUD条目(HUD)可能仍处于未整理状态,基于此运作的其他模组的 显示HUD 补丁(例:EpicMMOSystem的PvP玩家名称颜色显示补丁 怪物颜色文本因触碰了死者的残影 空引用异常这反复发生。

这个模组的作用不针对EpicMMOSystem或特定模组进行专门补丁,而是英灵神殿基础 显示敌人状态栏对Finalizer设置陷阱 任何模式的后缀里爆开 抓住,问题的老旧 HUD 直接清理项目和剩余的 HUD GameObject。这样下一帧就会正常创建新的项目。


🐛 漏洞 4 — ZSFX(英灵神殿默认音效)对象泄漏

英灵神殿的声音播放组件 ZSFX即使播放结束 完全没有自我消亡的逻辑。. 网络视图附着并通过网络同步的对象会根据自身的生命周期(死亡、消失等)进行清理,但在本地即时播放英灵神殿默认音效的(ZNetScene.GetPrefab + 实例化使用图案的模式在播放结束后也没有人销毁那个对象,所以会在整个会话期间不断堆积。而且英灵神殿本身的 单一更新器.更新()活着 ZSFX 全部 每一帧 由于会循环执行,每个泄漏的对象都会增加永久性的每帧开销——在反复使用音效华丽的法师系技能/武器模组时尤为明显,随着游玩时间增长会越来越卡,最终 资源.卸载未使用资源() 视角有时会导致游戏卡住(重新连接后场景会强制重新加载,暂时会有所改善)。这不是特定模组的问题,而是英灵神殿引擎本身的缺陷。

这个模组的功能: 自定义更新为 Postfix 打上补丁,已播放完毕、非循环播放、且已过初始播放延迟区间,网络视图仅自动销毁没有的实例——绝不触碰通过网络同步的对象。


🐛 错误 5 — TMP 非拉丁文字字形缺失警告

瓦尔海姆原版·TMP内置字体(例: 瓦尔海姆-预启动, LiberationSans SDF仅覆盖拉丁字符,韩文、日文、中文、阿拉伯文、希伯来文、泰文等非拉丁文字字形未包含在其自身的字形表和回退链中。每当玩家昵称、公会名等用户直接输入的非拉丁文本通过使用此类字体渲染的TMP_Text对象(例如EpicMMOSystem的名牌/公会名/信息面板)显示时,就会反复输出“The character with Unicode value ... was not found in the [...] font asset...”警告,且相应字符会被替换为空格或方块(□)。英灵神殿为其自身的多语言本地化,按文字系统使用了Noto系列字体(思源黑体韩文, 思源黑体, 思源黑体, NotoSansArabic 等11个脚本+表情符号)虽然已经内置在游戏文件中,但尚未连接到供玩家直接输入文本使用的TMP全局回退列表。

这个模组的功能:查找 Valheim 支持的每种语言的字体,每个会话一次将 TMP 的全局回退列表(回退字体资源全部注册到其中。不会捆绑新字体,仅使用瓦尔海姆已有的资源,无论文本来自哪个模组的TMP文本、属于哪种语言,都能正常显示,而不会出现空白或方块。


不是回避(无视),而是清理。 捕获异常的补丁在异常本身第一次发生时仍会照常触发,随后该模组会将其捕获,并真正清除导致问题的损坏状态(字典/集合中的死项)。因此同一个 entry 不会再次崩溃——这并不是仅仅隐藏日志、任由损坏状态继续存在的方式。像 ZSFX 补丁这样处理非异常类资源泄漏的情况,也是直接填补根本原因(缺少自身销毁逻辑),而非只掩盖症状的临时手段。每个补丁只触及目标方法(若不存在则为不做任何事的可选目标),不会修改其他模组的代码。


📥 安装方法
  1. 推荐: 从 r2modman/Thunderstore 自动安装
  2. 手动: 空引用修复.dll을 BepInEx/plugins/ 复制到文件夹

这些虫子无法通过网络同步 本地状态问题因此,服务器和各个客户端可能会各自独立地遇到这种情况。只在一侧安装的话,就只有那一侧会被修复——如果是多人游戏环境的话 所有连接到服务器的客户端建议安装在


英格兰

概述

空引用修复 是一系列独立的、小型Harmony补丁的集合。其中大多数修复了一个特定的bug,即 空引用异常触发后重复 本次会话剩余的每一帧;有几个补丁修复了资源泄漏的漏洞,这类漏洞会悄无声息地不断累积,直到导致卡顿或游戏冻结。每个补丁的根源和触发条件都各不相同,完全独立触发(或不触发)——取决于你的模组列表,有些补丁可能根本不会生效。

它目前修复了5个错误:

  1. 一个原版英灵神殿引擎漏洞(ZNetScene.移除对象)
  2. AzuCraftyBoxes模组漏洞(附近容器需求检查)
  3. 涉及模组冲突的错误 敌人界面 (EpicMMOSystem及类似模组)
  4. 原版英灵神殿 ZSFX 声音对象泄漏(无自毁逻辑——重复播放时会导致卡顿/冻结)
  5. 原生《英灵神殿》TMP字体缺少非拉丁字符字形(韩文、日文、中文、阿拉伯文等),导致昵称/公会名显示为空白

📦 必需模组(依赖项)
模组 版本 需要
BepInExPack_Valheim 5.4.2200+ 需要
阿祖工艺盒 任何 可选——该补丁仅在已安装时生效
史诗MMO系统 任何 可选——另外两个补丁没有它也能正常运行

可任意组合安全安装。如果上方某个模组未安装,其对应的补丁只会保持未激活状态;其余部分仍可正常运行。


🐛 Bug 1 — ZNetScene.RemoveObjects(原版英灵神殿)

如果 网络视图游戏对象在同一帧中被其他东西销毁了 ZNetScene.RemoveObjects 尝试清理它时,该方法抛出了一个 空引用异常 在它到达从其内部跟踪字典中删除过期条目的那一行之前(实例)。因为该条目永远不会被移除,所以完全相同的异常会在下一帧再次触发——并且在此后的每一帧、直至会话结束都会如此。

这是原版引擎的行为,不是任何特定模组导致的。即使没有安装任何模组也会发生;游戏越繁忙(更多怪物生成/消失、激烈战斗)只是更频繁地触发底层的竞态条件。

该补丁的作用:添加一个 Harmony 终结者 到 移除网络场景对象 只捕获那个特定异常并移除已销毁的(过期的) 网络视图 来自 实例 直接。


🐛 错误 2 — AzuCraftyBoxes 附近容器检查

AzuCraftyBoxes保持静态 哈希集合<容器> 它见过的附近每一个制作容器。 容器.销毁时 当一个箱子被拆除时,会通过补丁移除对应条目,但某些销毁路径(例如区域/区块卸载)会直接销毁GameObject而不经过该方法,从而留下一个被Unity销毁的(伪空)引用 容器 坐在片场里。下一次对附近容器进行配方检查时会调用 获取预制体名称() 一进门就扑向死者并抛出 空引用异常 ——制作菜单每多开一帧。

此补丁的作用仅在安装了AzuCraftyBoxes时激活;捕获该异常并移除已销毁的 容器 直接从集合中获取条目。


🐛 Bug 3 — 涉及EnemyHud的模组冲突(EpicMMOSystem等)

某些阵营/市场风格的模组会调用 敌人状态栏.显示状态栏 直接来自他们自己的 敌人界面.延迟更新 补丁以强制立即刷新HUD。如果该重入调用针对的角色已经登出或消失,其HUD条目(HUD) 仍可能一直没被清理,而另一个模组的 显示HUD 假定存在活动条目的补丁——例如EpicMMOSystem的PvP玩家名字颜色补丁, 怪物颜色文本 — 解引用已失效的引用并抛出异常 空引用异常 反复地。

这个补丁的作用:而不是针对EpicMMOSystem或任何特定模组,它修补的是原版 敌人界面.显示界面 自身与终结器绑定,从而捕获异常 无论哪个已安装模组的后缀抛出它然后清除过期的 HUD 条目(以及其残留的 HUD GameObject),以便下次调用时重建一个干净的。


🐛 漏洞 4 — 泄漏的 ZSFX(原版 Valheim 音效)对象

《英灵神殿》的音效播放组件, ZSFX,有 完全没有自毁逻辑 播放结束后。被追踪的对象 网络视图 会在自身的生命周期中(死亡、消失等)被清理掉,但任何在本地实例化原版音效的模组(例如 ZNetScene.GetPrefab + 实例化 播放一次性音效)不会留下任何可供销毁的实例——它只会在整个游戏会话期间一直存在。更糟的是,Valheim 自带的 单更新器.更新() 迭代 全部 直播 ZSFX 列出每一帧,因此每个泄漏实例都会增加一项永久的逐帧开销——在那些会反复施放、音效繁重的法师职业技能/武器模组上最为明显,会导致卡顿逐渐加重,最终可能在以下过程中冻结游戏: Resources.UnloadUnusedAssets() (重新登录会强制重新加载场景并暂时修复该问题)。这是原版引擎的行为,不是任何特定模组导致的。

此补丁的作用:为……添加后缀 自定义更新 在播放完成后仅销毁一次实例,不循环,已过初始播放延迟窗口,且没有 网络视图 ——绝不碰任何可能被网络同步的东西。


🐛 Bug 5 — TMP 文本中缺少非拉丁文字字形警告

原版/TMP内置字体(例如 瓦尔海姆-普尔斯特塔克, LiberationSans SDF)它们只覆盖拉丁字形——韩语、日语、中文、阿拉伯语、希伯来语、泰语及其他非拉丁文字系统都不在其各自的字形表或回退链中。每当玩家自创的非拉丁文本——例如昵称或公会名——通过这些字体之一经由 TMP_Text 对象渲染时(例如 EpicMMOSystem 的名牌/公会名/信息面板对象),Unity 会反复记录“未在 […] 字体资产中找到 Unicode 值为……的字符……”的警告,并将该字符替换为空格或缺失字形方框(□)。Valheim 已为其自身本地化支持的每种非拉丁文字系统随附了 Noto 系列字体资产(思源黑体韩文, 无衬线日文, 思源黑体, 思源阿拉伯体,以及另外 7 个,再加上一套表情符号)都在它自己的游戏文件里,但它们都没有接入 TMP 的备用列表,用于处理玩家任意编写的文本。

本次补丁内容: 查找 Valheim 自带的每种语言字体,并将它们全部注册到 TMP 的全局后备字体列表中 (TMP_Settings.fallbackFontAssets每次会话一次。不捆绑新字体——它复用 Valheim 已自带的资源——并且能修复任何模组在任意上述语言中的 TMP 文本渲染,不仅限于韩语,也不仅限于某一个特定模组。


清理,而非逃避。 对于异常捕获补丁,异常本身仍会触发一次——此模组会捕获那一次异常,然后真正删除导致异常的损坏状态(已失效的字典/集合条目)。同一条目不会再次抛出异常。它不仅仅是隐藏日志而将损坏状态留在原处。ZSFX补丁将同样的理念应用于资源泄漏而非异常:它从真正的根源补全缺失的自毁逻辑,而非仅仅掩盖表面症状。每个补丁只触及自己的目标方法(或者,如果目标不存在,则完全不执行任何操作)——不会修改任何其他模组的代码。


📥 安装
  1. 推荐通过 r2modman/Thunderstore 安装
  2. 手动复制 NullReferenceFix.dll 进入 BepInEx/plugins/

这些问题是本地状态,不是通过网络同步的——服务器和每个客户端都可能各自遇到。只在一端安装只能修复那一端。在多人游戏中,请在 服务器和每个已连接的客户端 保险起见。


🎮 我的其他模组 / 一起玩更有趣的模组

🌳 舰长技能树

👹 怪物修正

🎵 船长音频


📝 制作人员 / 鸣谢

  • 开发者 / 开发者:KorCaptain
  • 框架:BepInEx、Harmony

💬 支持 / 지원


📜 许可 / 许可证

开发者 - 科队长


享受更安静的日志文件!

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!