如何将相同的数字传递给许多函数

时间:2017-06-20 13:58:38

标签: c# unity3d

我有一个生成随机数的脚本,我还有许多其他脚本必须从第一个脚本接收该随机数。

这就是我尝试过的,但它不起作用。始终给出0作为结果。

    int xNum;

int generateNum()
{
    return Random.Range(10, 100);
}

void Start()
{
    xNum = generateNum();
}


public int Getnumber()
{
    return xNum;
}

然后我在另一个脚本中调用Getnumber()方法,但正如我所说它总是返回0.任何建议我做错了什么?

在所有其他脚本中,P.S随机数必须相同

3 个答案:

答案 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);
}