2017-07-27 56 views
0

我一直试图在Unity中使用C#创建自己的类,但遇到了一个小问题。在我的PlayerClass结构我想要使用Random.Range(0,9)作为参考号码生成一个字符串六个随机数。目前,我使用这样做的代码行,如下所示:Unity - 无法在类构造中生成随机数

refNum = Random.Range (0, 9) + Random.Range (0, 9) + Random.Range (0, 9) + Random.Range (0, 9) + Random.Range (0, 9) + Random.Range (0, 9); 

我已经创建的变量引用句柄之外构建的在班上名列前茅。每次运行我的游戏时,我都会收到一个错误消息,说我无法从类构造中生成随机数。有人知道解决这个问题的方法吗?

非常感谢,

汤米

+0

不是一个真正的解决方案,但你只是总结6随机数字?结果,你将有最多2位数字。另请参阅https://stackoverflow.com/a/36104497/384674 ;-) – Betlista

+0

这是一个monobehavior附加到一个对象?如果是这样,请改用'Start()'或'Awake()'。 – Draco18s

+0

@Betlista六个骰子滚动和总结并没有一个统一的分布。这对提问者来说可能很重要。 – Draco18s

回答

1

要具有包含六个随机数字组成的字符串(0-9),你需要首先确保其中要使用(一个从UnityEngineSystemRandom类)。如果您正在使用从UnityEngine的人,你应该做这样的事情:

string randomString = Random.Range(0, 9).ToString() + Random.Range(0, 9).ToString() + Random.Range(0, 9).ToString() + Random.Range(0, 9).ToString() + Random.Range(0, 9).ToString() + Random.Range(0, 9).ToString(); 

或许更优雅的方式来做到这一点:

string randomString = ""; 
    for (int i = 0; i < 6; i++) 
     randomString += Random.Range(0, 9).ToString(); 
+0

我在我的PlayerClass中创建了一个独立的函数,它保存了生成一个随机数的第二种方法。它的工作原理,但我不能通过我的构造函数来调用它。无论如何,我可以在每次从任何其他脚本创建一个类型为PlayerClass的新变量时调用此函数吗? –

+0

我已经复制了您描述的内容,没有任何错误。你是否确保在你正在编写你的'PlayerClass'的文件中声明'使用UnityEngine'? – Lui

+0

是的,我肯定使用UnityEngine –