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

  1. 确认进入战斗前已稳定在战斗界面,增加路线结束到识别队伍之间的等待。
  2. 更新/重新生成角色识别资源(头像模板)。
  3. 检查日志中 CombatScenes 的识别细节,定位是哪个角色识别失败。
  4. 提高 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

When it happens

Trigger: 游戏未处于可识别角色的界面(如仍在过场、传送中、UI 遮挡);角色头像/血条被特效遮挡;分辨率/缩放使角色识别模板失配;CombatScenes 识别逻辑对该队伍配置不识别。

Common situations: Boss 路线执行后未正确进入战斗场景;角色站位异常导致头像 OCR 失败;游戏版本更新后角色识别资源过期;多角色同名或新角色未录入。

Related errors


AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13). Data as JSON: /api/errors/3ed18fabfa5e7f8d. Report an issue: GitHub.