统一范围的声明有什么问题



声明引发错误:必须声明一个主体,因为它没有标记为abstract、extract或partial:

int Range(int minValue, int maxValue);
// Start is called before the first frame update
void Start()
{
.
.   
.
}
int Range(int minValue, int maxValue);

实际上看起来像是一个名为Range的方法的抽象方法签名,该方法使用两个int参数。这就是编译器告诉你的:它希望你实现";方法";像

int Range(int minValue, int maxValue)
{
return someIntValue;
}

我想做的是使用Random在一个范围内生成一个int,该范围将用于索引数组

听起来你想做的事情就像

private int someRandomValue = Random.Range(minValue, maxValue);

注意但是:只有当这里的minValuemaxValueconst或至少是static时,这才有可能,因为字段将在执行此类型的构造函数之前初始化=>不能使用任何实例字段(例如,来自Inspector(

否则,您需要初始化字段,例如

private int someRandomValue;
private void Awake ()
{
someRandomValue = Random.Range(minValue, maxValue);
}

如果这是一个阵列,你可能会想做

private void Awake ()
{
someRandomValue = Random.Range(0, theArray.Length);
}

实际上,您的语句int Range(int minValue, int maxValue);对编译器来说就像是一个方法声明。如果没有看到该文件中的其余代码,我就无法轻松确定您要完成的是什么。

只需使用Unity 中的RangeAttribute

[Range(1, 6)]
public int integerRange;

最新更新