我有一个生成随机数的脚本,我还有许多其他脚本必须从第一个脚本接收该随机数。
这就是我尝试过的,但它不起作用。始终给出0作为结果。
int xNum;
int generateNum()
{
return Random.Range(10, 100);
}
void Start()
{
xNum = generateNum();
}
public int Getnumber()
{
return xNum;
}
然后我在另一个脚本中调用Getnumber()方法,但正如我所说它总是返回0.任何建议我做错了什么?
在所有其他脚本中,P.S随机数必须相同
答案 0 :(得分:3)
如果你想只生成一次这个随机数或“按需”,那么我建议你做这样的事情:
int? _generatedRandom;
public int GeneratedRandom
{
get {
if ( !_generatedRandom.HasValue )
GenerateRandom();
return _generatedRandom.Value;
}
}
void GenerateRandom()
{
_generatedRandom = Random.Next(10, 100);
}
然后,您可以通过其他脚本致电:
int randomNumber = MeRandomNumberClass.GeneratedRandom;
答案 1 :(得分:1)
您生成单个数字然后将其传递到外面的代码完全没问题。
错误必须出在您调用GetNumber()
的方式/来源,或者您的类不是从MonoBehaviour
继承(这意味着Start
永远不会被执行,所以{{ 1}}保持默认值0。)
请提供您班级的所有代码,包括班级声明,以及调用xNum
的脚本代码。
答案 2 :(得分:0)
有些人要求提供完整的代码,我会提供其他脚本的代码
public Number player;
int num;
private void Start()
{
num = player.GetComponent<Number>().Getnumber();
Debug.Log("Number is: " + num);
}