babalae/better-genshin-impact · error · TimeoutException
超时未找到征讨之花领奖界面
Error message
超时未找到征讨之花领奖界面
What it means
NavigateToReward 以 20 秒为上限并行跑 AdjustRewardCamera、MoveToReward、MonitorRewardPrompt 三个任务,主循环每 500ms 检查 navigationStopwatch,超 20s 仍未进入征讨之花领奖界面即抛 TimeoutException。
Source
Thrown at BetterGenshinImpact/GameTask/AutoBoss/AutoBossTask.cs:1192
using var navigationCts = CancellationTokenSource.CreateLinkedTokenSource(_ct);
var page = new BvPage(navigationCts.Token);
_logger.LogInformation("{Name}:开始寻找征讨之花", Name);
var navigationStopwatch = Stopwatch.StartNew();
var navigationTimeout = TimeSpan.FromSeconds(20);
var adjustCameraTask = AdjustRewardCameraTask(page, navigationCts);
var moveToRewardTask = MoveToRewardTask(page, navigationCts);
var monitorRewardPromptTask = MonitorRewardPromptTask(page, navigationCts);
try
{
while (true)
{
_ct.ThrowIfCancellationRequested();
if (navigationStopwatch.Elapsed >= navigationTimeout)
{
throw new TimeoutException("超时未找到征讨之花领奖界面");
}
var completedTask = await Task.WhenAny(Task.Delay(500, _ct),adjustCameraTask,moveToRewardTask,monitorRewardPromptTask);
if (completedTask == monitorRewardPromptTask)
{
await monitorRewardPromptTask;
_logger.LogInformation("{Name}:已进入征讨之花领奖界面", Name);
return;
}
if (completedTask == adjustCameraTask || completedTask == moveToRewardTask)
{
navigationCts.Cancel();
await completedTask;
throw new TimeoutException("前往征讨之花任务异常结束");
}
}View on GitHub (pinned to a7cb36712d)
Solutions
- 适当增大 navigationTimeout(如 30s)以容忍慢机器/远距离。
- 改进 MoveToReward/AdjustRewardCamera 的定位逻辑,确保靠近花。
- 校准 MonitorRewardPanelPrompt/HasRewardInteractionPrompt 的 OCR 区域与文本。
- 确认战斗确实结束且角色存活可移动。
Example fix
// before
var navigationTimeout = TimeSpan.FromSeconds(20);
...
if (navigationStopwatch.Elapsed >= navigationTimeout)
{
throw new TimeoutException("超时未找到征讨之花领奖界面");
}
// after
var navigationTimeout = TimeSpan.FromSeconds(30);
if (navigationStopwatch.Elapsed >= navigationTimeout)
{
throw new TimeoutException($"超时未找到征讨之花领奖界面(已等待 {navigationStopwatch.Elapsed.TotalSeconds:F0}s)");
} Defensive patterns
Strategy: retry
Validate before calling
// 无法在调用前预判;可配置 navigationTimeout var navigationTimeout = TimeSpan.FromSeconds(30); // 容忍慢机器
Try / catch
try { await NavigateToReward(); }
catch (TimeoutException ex) { _logger.LogWarning("{Name}:{Msg}", Name, ex.Message); /* 可重试一次或回退到兜底领奖逻辑 */ } Prevention
- 根据机器性能调大 navigationTimeout。
- 确保战斗结束角色存活且站位合理。
- 校准领奖 OCR 区域与提示文本。
When it happens
Trigger: 战斗结束后角色位置离征讨之花过远或卡地形;镜头调整/移动任务未能对准花;'接触征讨之花'/'使用原粹树脂' 提示 OCR 一直未命中;游戏卡顿/掉帧使按键未生效;角色死亡/无敌帧导致无法交互。
Common situations: Boss 路线结束站位不佳;网络/帧率延迟;OCR 区域(ScaleRect 1210,300 / 850,740)漂移;游戏版本 UI 变化导致提示文本不匹配。
Related errors
- 关闭补充原粹树脂提示超时
- 前往征讨之花任务异常结束
- 计算缺失树脂 {missingResin} 超过树脂上限 {resinLimit}
- 原粹树脂上限 OCR 失败:{countText}
- 原粹树脂上限解析失败:{countText}
AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13).
Data as JSON: /api/errors/61e6c9e062f946aa.
Report an issue: GitHub.