安装 Steam
登录
|
语言
繁體中文(繁体中文)
日本語(日语)
한국어(韩语)
ไทย(泰语)
български(保加利亚语)
Čeština(捷克语)
Dansk(丹麦语)
Deutsch(德语)
English(英语)
Español-España(西班牙语 - 西班牙)
Español - Latinoamérica(西班牙语 - 拉丁美洲)
Ελληνικά(希腊语)
Français(法语)
Italiano(意大利语)
Bahasa Indonesia(印度尼西亚语)
Magyar(匈牙利语)
Nederlands(荷兰语)
Norsk(挪威语)
Polski(波兰语)
Português(葡萄牙语 - 葡萄牙)
Português-Brasil(葡萄牙语 - 巴西)
Română(罗马尼亚语)
Русский(俄语)
Suomi(芬兰语)
Svenska(瑞典语)
Türkçe(土耳其语)
Tiếng Việt(越南语)
Українська(乌克兰语)
报告翻译问题
I'm rather certain it's got to do with saved games where, prior to this latest update, a HaulExplicitly job was currently in progress. I tried it with a new game and experienced no issues.
Here's a paste with my Player.log at the moment where the error occurs (after that it just continues to throw the same exceptions ad infinitum): https://pastebin.com/aN4FMH0E
2. Then you should be able to find your save file according to the name of your save. First, make a copy of it as a backup, then right-click it and select “Open with...” and choose “Notepad” (I’m guessing you’re also using Windows. If not, it might be hard for me to help you).
3. Press “Ctrl+F” to search for
You should see this line of code inside a structure like this:
4. Replace this structure with:
5. Do this replacement for all occurrences you find. Save the file, close Notepad, and then go back to the game and open the save — it should work.
首先,我需要理解这个错误的原因。ArgumentNullException通常发生在尝试使用null引用时,这里是在Activator.CreateInstance(type)时type参数为null。可能的情况是某个地方试图实例化一个未正确初始化的类型,或者Mod加载了错误的类型。
接下来,我需要分析堆栈中的关键点。上下文是HaulExplicitly,这可能与搬运任务有关。Harmony补丁可能修改了原始代码,导致类型未正确加载或初始化。此外,堆栈中多次出现Harmony的补丁,可能涉及多个Mod的冲突。
接下来,我应该考虑如何解决这个问题。可能的步骤包括:
检查所有Mod是否兼容当前游戏版本,特别是涉及HaulExplicitly或搬运任务的Mod。
检查是否有Mod使用Harmony补丁修改了ThinkNode_PrioritySorter或相关类,可能导致类型加载失败。
尝试禁用部分Mod,特别是最近安装的,以确定是否是某个Mod引起的问题。
查看游戏日志或错误日志,寻找更多线索,比如具体的类型名称或Mod名称。
更新所有Mod到最新版本,确保兼容性。
如果问题持续,可能需要联系Mod作者或查看相关论坛,寻找已知问题和解决方案。
由于用户提供的堆栈信息中包含Harmony的补丁和Unity的堆栈提取,这可能表明问题与Mod的Harmony补丁有关。需要进一步调查这些补丁是否正确处理了类型实例化,或者是否存在类型加载失败的情况。
此外,用户可能希望得到具体的解决步骤,而不仅仅是理论分析。因此,我需要结合堆栈信息中的线索,如“HaulExplicitly”和“Activator.CreateInstance”,来推断可能的问题来源,并建议用户检查相关Mod或代码部分。
总结来说,我需要分析堆栈信息,确定错误原因,并给出具体的解决步骤,如检查Mod兼容性、更新Mod、禁用冲突Mod等。同时,可能需要用户提供更多信息,如Mod列表或游戏版本,以便更准确地诊断问题。
思考完成:
准备输出结果
根据错误日志分析,这是RimWorld游戏中由Harmony补丁引发的类型实例化空引用异常,核心问题出现在搬运任务(HaulExplicitly)的AI决策流程中。以下是系统性解决方案:
🔍 根本原因分析
空类型实例化:Activator.CreateInstance(null)触发异常,表明某个Mod尝试动态创建未正确初始化的类型,可能涉及搬运任务的Job定义。
Harmony补丁冲突:堆栈显示多个Harmony补丁(如TryIssueJobPackage_Patch1)在ThinkNode层级相互嵌套,可能因Mod兼容性问题导致类型加载失败。
上下文定位:HaulExplicitly上下文指向搬运任务逻辑,常见于仓库管理、资源搬运等场景,暗示问题与物品搬运AI相关。
🛠️ 解决方案路径
第一步:基础排查
检查Mod兼容性:
更新所有Mod至最新版本,特别是涉及搬运/任务系统的Mod(如《Pick Up and Haul》《Haul to Stack》)。
使用Mod管理器(如RimPy)检测冲突,按加载顺序调整Mod位置,确保基础框架Mod(如Harmony、HugsLib)优先加载。
验证游戏完整性:
在Steam中验证游戏文件完整性,排除官方代码损坏可能。
第二步:针对性修复
禁用可疑Mod:
临时禁用最近安装的搬运/任务类Mod,通过二分法定位冲突Mod。
重点检查使用Harmony补丁修改AI决策树的Mod(如《Allow Tool》《Work Tab》)。
清理缓存与配置:
删除游戏目录下的Config和Cache文件夹,重置配置文件。
清除Mod配置中的冗余设置(如自定义工作优先级)。
第三步:高级调试
日志深度分析:
启用开发模式(-dev启动参数),查看完整错误日志,定位触发异常的具体类型名称。
使用RimWorld Log Analyzer等工具解析日志,识别异常前最后一次成功操作。
代码级修复(高级用户):
若具备编程能力,检查Mod源码中Activator.CreateInstance调用处是否传递了null类型,添加空值检查逻辑:
csharp
if (type != null)
{
object instance = Activator.CreateInstance(type);
}
else
{
Log.Error("Attempted to create instance of null type in HaulExplicitly context");
}
📌 预防措施
定期更新Mod:订阅Mod作者的版本更新通知,及时修复兼容性问题。
备份存档:在修改Mod配置前备份存档文件,避免数据丢失。
社区支持:在RimWorld官方论坛或Mod评论区提交错误报告,附完整日志文件(Player.log),协助开发者定位问题。
建议优先执行基础排查步骤,若问题持续,可提供Mod列表及错误日志完整片段,进一步分析具体冲突源。
——
来自AI的回复,希望能对你有帮助。
如果这条红字会循环出现,你可以先点一下日志界面左上角的clear,然后等到它第一次出现,这是这条红字应该就不带“Duplicate stacktrace, see ref for original”了。
🤔看来是我记错了,是Harmony导致重复红字带有“Duplicate stacktrace, see ref for original”,不是原版更新来的。(来源:百度贴吧[tieba.baidu.com])
[Ref E33F6328] Duplicate stacktrace, see ref for original
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Log.Error_Patch4 (string)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:RimWorld.JobGiver_Work.TryIssueJobPackage_Patch1 (RimWorld.JobGiver_Work,Verse.Pawn,Verse.AI.JobIssueParams)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Glue:AbiFixup<Verse.AI.ThinkResult RimWorld.JobGiver_Work:TryIssueJobPackage(Verse.Pawn, Verse.AI.JobIssueParams),Verse.AI.ThinkResult RimWorld.JobGiver_Work.TryIssueJobPackage_Patch1(RimWorld.JobGiver_Work, Verse.Pawn, Verse.AI.JobIssueParams)> (RimWorld.JobGiver_Work,Verse.AI.ThinkResult&,Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage (Verse.Pawn,Verse.AI.JobIssueParams)
Verse.AI.Pawn_JobTracker:DetermineNextJob (Verse.ThinkTreeDef&,bool)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch2 (Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool)
Verse.AI.Pawn_JobTracker:JobTrackerTickInterval (int)
Verse.Pawn:TickInterval (int)
Verse.Thing:DoTick ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.TickList.Tick_Patch2 (Verse.TickList)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.TickManager.DoSingleTick_Patch4 (Verse.TickManager)
Verse.TickManager:TickManagerUpdate ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Game.UpdatePlay_Patch2 (Verse.Game)
Verse.Root_Play:Update ()
殖民者
.和搬运机都不能正常搬物品,这是bug吗,问ai说是不能正确找到要搬运的物品
这样,你能试试用文件管理器打开地址:%appdata%\..\LocalLow\Ludeon Studios\RimWorld by Ludeon Studios\
然后把里面的Player.log文件通过网盘发给我吗?
2.我要通过哪个网盘来发给你?
随便吧,理论上这个文件没有多大,以及我没有任何网盘会员。对我来说都一样(