babalae/better-genshin-impact · error · Exception
识别队伍角色失败(已重试 5 次)
Error message
识别队伍角色失败(已重试 5 次)
What it means
初始化战斗队伍时循环最多重试 maxRetries(5)次,每次 new CombatScenes().InitializeTeam 后用 CheckTeamInitialized 判断。5 次仍未识别到队伍角色即抛普通 Exception,表示无法进入战斗脚本执行阶段。
Source
Thrown at BetterGenshinImpact/GameTask/AutoBoss/AutoBossTask.cs:871
private CombatScenes GetCombatScenesWithRetry()
{
const int maxRetries = 5;
for (var attempt = 1; attempt <= maxRetries; attempt++)
{
_ct.ThrowIfCancellationRequested();
var combatScenes = new CombatScenes().InitializeTeam(CaptureToRectArea());
if (combatScenes.CheckTeamInitialized())
{
return combatScenes;
}
if (attempt < maxRetries)
{
Sleep(1000, _ct);
}
}
throw new Exception("识别队伍角色失败(已重试 5 次)");
}
/// <summary>
/// 根据当前队伍匹配战斗脚本,并切换到脚本中的首个角色。
/// </summary>
/// <param name="combatScenes">已初始化的战斗场景。</param>
/// <returns>匹配到的战斗指令列表。</returns>
/// <exception cref="Exception">没有可用战斗脚本时抛出。</exception>
private List<CombatCommand> FindCombatScriptAndSwitchAvatar(CombatScenes combatScenes)
{
var combatCommands = _combatScriptBag.FindCombatScript(combatScenes.GetAvatars());
if (combatCommands.Count == 0)
{
throw new Exception("没有可用战斗脚本");
}
var avatar = combatScenes.SelectAvatar(combatCommands[0].Name);
avatar?.SwitchWithoutCts();View on GitHub (pinned to a7cb36712d)
Solutions
- 确认进入战斗前已稳定在战斗界面,增加路线结束到识别队伍之间的等待。
- 更新/重新生成角色识别资源(头像模板)。
- 检查日志中 CombatScenes 的识别细节,定位是哪个角色识别失败。
- 提高 maxRetries 或在重试间加入返回主界面/重新触发战斗的恢复动作。
Example fix
// before
Sleep(1000, _ct);
...
throw new Exception("识别队伍角色失败(已重试 5 次)");
// after
for (var attempt = 1; attempt <= maxRetries; attempt++)
{
var combatScenes = new CombatScenes().InitializeTeam(CaptureToRectArea());
if (combatScenes.CheckTeamInitialized()) return combatScenes;
_logger.LogWarning("{Name}:第 {N}/{Max} 次队伍识别失败", Name, attempt, maxRetries);
if (attempt < maxRetries) Sleep(1000, _ct);
}
throw new Exception("识别队伍角色失败(已重试 5 次)"); Defensive patterns
Strategy: retry
Validate before calling
// 战斗前确认处于可识别角色的界面(无直接 API,建议加等待) // 已有 5 次重试;可在外层追加返回主界面后再试
Try / catch
try { return await GetCombatScenesWithRetry(); }
catch (Exception ex) when (ex.Message.Contains("识别队伍角色失败")) { _logger.LogError("{Name}:{Msg}", Name, ex.Message); throw; } Prevention
- 确保路线结束后稳定进入战斗界面再识别队伍。
- 保持角色识别资源与游戏版本同步。
- 重试间加入 UI 恢复动作(如重新触发战斗)。
When it happens
Trigger: 游戏未处于可识别角色的界面(如仍在过场、传送中、UI 遮挡);角色头像/血条被特效遮挡;分辨率/缩放使角色识别模板失配;CombatScenes 识别逻辑对该队伍配置不识别。
Common situations: Boss 路线执行后未正确进入战斗场景;角色站位异常导致头像 OCR 失败;游戏版本更新后角色识别资源过期;多角色同名或新角色未录入。
Related errors
- 没有可用战斗脚本
- 计算缺失树脂 {missingResin} 超过树脂上限 {resinLimit}
- 原粹树脂上限 OCR 失败:{countText}
- 原粹树脂上限解析失败:{countText}
- 未识别到全部恢复时间:{text}
AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13).
Data as JSON: /api/errors/3ed18fabfa5e7f8d.
Report an issue: GitHub.