【发布时间】:2020-11-08 20:35:22
【问题描述】:
我有一个初学者问题。为什么这段代码不会产生错误信息?
public Tile[] tiles = new Tile[2];
...
SetTile(0, 0, 0, nocollide, tiles[Random.Range(0,2)]);
数组中有两个项目,但我选择一个从 0 到 2 的值,即三个项目。当我达到 0,1 时,它只会选择第一个项目。但为什么呢?
【问题讨论】:
-
是this
Random.Range吗?然后它返回一个浮点数,使其达到 2.0 完全不太可能(但并非不可能)。并且任何 1.9999999999 都将被截断为 1。- 你应该使用一个随机函数来代替你的整数。 -
因为 Random.Range 方法返回一个在 [0,2) 范围内的数字,这意味着结果可以是 1,0 但不能是 2
-
(哦,没有看到基于 int 的重载;文档的格式很奇怪)
标签: c# arrays unity3d random indexoutofboundsexception