You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2D Roguelike游戏玩家仅移动一次触发ArgumentOutOfRangeException错误求助

问题解决:Unity 2D Roguelike 玩家仅移动一次触发索引越界错误

错误原因分析

从错误日志和代码来看,问题明确出在GameManager的MoveEnemies协程中:

  • 你在for循环里硬编码使用索引1访问enemies列表(enemies[1].MoveEnemy()),但场景中的敌人数量可能小于2(比如当前仅生成了1个敌人),这直接触发了ArgumentOutOfRangeException(索引超出集合有效范围)。
  • 循环变量i完全没被利用,代码本意是遍历所有敌人,但实际每次都试图访问第二个敌人,逻辑完全错误。

修复代码

将MoveEnemies协程中的for循环部分修改为:

IEnumerator MoveEnemies()
{
    enemiesMoving = true;
    yield return new WaitForSeconds(turnDelay);
    if (enemies.Count == 0)
    {
        yield return new WaitForSeconds(turnDelay);
    }
    for (int i = 0; i < enemies.Count; i++)
    {
        // 用循环变量i代替硬编码的1,遍历每个敌人
        enemies[i].MoveEnemy();
        yield return new WaitForSeconds(enemies[i].moveTime);
    }

    playersTurn = true;
    enemiesMoving = false;
}

修复说明

  • 替换后,循环会依次访问enemies列表中的每个敌人(从索引0到enemies.Count-1),彻底避免索引越界问题。
  • 逻辑上也符合Roguelike游戏的敌人回合机制:每个敌人按顺序完成移动动作。

内容的提问来源于stack exchange,提问作者Rothcol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:59:55