IndexOutOfRangeException: Array index is out of range怎样解决 5

usingUnityEngine;usingSystem.Collections;publicclassrandom:MonoBehaviour{GameObjectBe... using UnityEngine;
using System.Collections;
public class random : MonoBehaviour {
GameObject Ben;
public GameObject[] Balls;
float t1=0.0f;
float t2=3.0f;
// Use this for initialization
void Start () {
Ben=GameObject.Find("Sphere");
}

// Update is called once per frame
void Update () {
t1+=Time.deltaTime;
if(t1>=t2)
{
Ben.transform.position=new Vector3((Random.value*14-7.0f),Ben.transform.position.y,Ben.transform.position.z);
Instantiate(Balls[Mathf.FloorToInt(Random.value*3)],Ben.transform.position,Ben.transform.rotation);
t1=0.0f;
}

}
}
这个代码是随机生成对象的代码,可是在运行时总是提醒 Instantiate(Balls[Mathf.FloorToInt(Random.value*3)],Ben.transform.position,Ben.transform.rotation);本行有 Instantiate(Balls[Mathf.FloorToInt(Random.value*3)],Ben.transform.position,Ben.transform.rotation);代码。怎样解决呢。
展开
 我来答
爱娱乐达人小张
高粉答主

2020-05-14 · 关注我不会让你失望
知道答主
回答量:395
采纳率:100%
帮助的人:8.1万
展开全部

具体解决方法如下:

1、首先可以看到在运行程序的时候,出现list index out of range错误,如下图所示:

2、需要知道list index out of range错误出现的原因主要有两个,一个可能是下标超出范围,一个可能是list是空的,没有一个元素,如下图所示:

3、知道原因之后,我们来看一下报错的代码,可以看到这个错误的原因是定义了一个空list,如下图所示:

4、修改代码,定义一个固定长度的list,并初始都赋值为0,如下图所示:

5、再次运行程序,可以看到已经解决了list index out of range错误,主要看代码是下标越界错误,还是空列表错误,然后对症解决,如下图所示:

百度网友e3be105
推荐于2017-06-14
知道答主
回答量:18
采纳率:0%
帮助的人:12.7万
展开全部
这个异常意思是说,数组索引超越的边界。 就像只有4个项的数组中,你却要找他的第5项数据。
问题应该出在Balls[Mathf.FloorToInt(Random.value*3)]中,Mathf.FloorToInt(Random.value*3)算出来的数字是大于balls这个数据的长度的。
追问
可是balls是一个实例化啊。。里面是4个球类对象来着……那要怎么改呢~~~
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-10-19
展开全部
你在声明Balls的时候只是声明它是一个GameObject类的数组,并没有声明数组的长度,所以你之后对这个数组中任何数据的操作都会被认定为越界。

解决方法是对这个数组的长度进行赋值:
int i=XXX;
Balls = new Object[i];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式