首页 > 解决方案 > 数组在选择随机项 C#/Unity 时不给出越界错误消息

问题描述

我有一个初学者问题。为什么此代码不会导致错误消息?

public Tile[] tiles = new Tile[2];
...
SetTile(0, 0, 0, nocollide, tiles[Random.Range(0,2)]);

数组中有两个项目,但我选择一个从 0 到 2 的值,即三个项目。当我达到 0,1 时,它只会选择第一个项目。但为什么?

标签: c#arraysunity3drandomindexoutofboundsexception

解决方案


public static int Range(int min, int max);

描述

原因很简单,返回一个介于 min [ inclusive ] 和 max [ exclusive ]之间的随机整数(只读)。

max 是独占的。Random.Range(0, 10) 可以返回 0 到 9 之间的值。

如果要包含最大值,则可以使用以下重载方法。

public static float Range(float min, float max);

描述

返回 min [ inclusive ] 和 max [ inclusive ]之间的随机浮点数(只读)。

max 是包容性的。Random.Range(0.0f, 1.0f) 可以返回 1.0 作为值。

参考: https ://docs.unity3d.com/ScriptReference/Random.Range.html


推荐阅读