babalae/better-genshin-impact · error · Exception

IndexRect为空

Error message

IndexRect为空

What it means

Error "IndexRect为空" thrown in babalae/better-genshin-impact.

Source

Thrown at BetterGenshinImpact/GameTask/AutoFight/Model/Avatar.cs:415

            {
                return;
            }

            SimulateSwitchAction(Index);

            Sleep(250);
        }
    }

    /// <summary>
    /// 是否出战状态
    /// </summary>
    /// <returns></returns>
    public bool IsActive(ImageRegion region)
    {
        if (IndexRect == default)
        {
            throw new Exception("IndexRect为空");
        }
        else
        {
            var white = IsIndexRectWhite(region, IndexRect);
            return !white;
        }
    }

    private bool IsIndexRectWhite(ImageRegion region, Rect rect)
    {
        // 剪裁出IndexRect区域
        using var indexRa = region.DeriveCrop(rect);
        using var mat = indexRa.CacheGreyMat;
        var count = OpenCvCommonHelper.CountGrayMatColor(mat, 251, 255);
        if (count * 1.0 / (mat.Width * mat.Height) > 0.5)
        {
            return true;
        }

View on GitHub (pinned to a7cb36712d)

Solutions

  1. 确保角色头像识别前已成功截取游戏画面
  2. 检查截图器是否正常初始化
  3. 若频繁出现,反馈该角色头像识别区域的适配问题

Example fix

单人模式重新运行让编号框正常识别;联机模式需确保队伍编号识别成功;频繁出现可反馈日志。

When it happens

Trigger: 调用 Avatar.IsActive 判断角色是否出战时,该角色的 IndexRect(编号框位置)尚未被赋值(为 default),无法裁剪区域而抛出。

Common situations: 联机或异常识别流程中角色编号块位置未成功识别,随后又尝试判断出战状态。


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