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

Unity编辑器ArgumentOutOfRangeException报错调试求助

Unity OutOfRangeException 报错解读与调试方案

核心错误原因

ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

这是典型的List索引越界问题:你使用的索引值要么是负数,要么大于等于目标List的元素总数(List的索引从0开始,比如含5个元素的List,有效索引是0-4)。

关键术语解释

System.Collections.Generic.List1[T].get_Item` 是C#底层的List元素访问逻辑:

  • List1[T] 就是你代码里用的泛型List(比如List、List`这类)
  • get_Item 是调用list[index]时底层触发的元素获取方法,说白了就是你用某个List变量[索引值]的写法出了问题。

精准定位错误代码

报错里的调用链已经给出了明确位置:

  • 错误直接触发在 GameManagerOneHundred.cs的第1146行,属于myHandStrength()方法
  • 调用路径:FunctionTimer.Update() → GameManagerOneHundred.smartBot()(1154行)→ GameManagerOneHundred.myHandStrength()(1146行)

直接打开GameManagerOneHundred.cs跳转到1146行,找所有形如xxxList[索引值]的代码,这就是问题所在。

关于(at <4ba27aa039714eafa1e8892e51af2932>:0)

这是.NET底层库的编译哈希路径,指向系统自带的List源码,和你的项目代码无关,完全不需要用来调试。

调试建议

  • 在1146行打断点,触发报错时查看当前List的Count值与你使用的索引值,对比就能找到越界原因
  • 如果索引是动态计算的(比如用变量i),检查计算逻辑:是否出现i >= List.Count或i < 0的情况(比如循环起始值错误、减法操作过度)
  • 可以在List访问前加安全判断,同时打印日志排查:
    if (index >= 0 && index < targetList.Count)
    {
        var item = targetList[index];
    }
    else
    {
        Debug.LogError($"索引越界:索引值{index},List长度{targetList.Count}");
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:45:08