【发布时间】:2018-01-02 13:33:52
【问题描述】:
我必须生成不同的对象,重要的是不要重复两个对象。我的意思是,random.range 不应该同时得到两个相同的数字,否则代码有时会产生相同的对象。这是一个更简单的代码,可以帮助您理解我在尝试什么。
void Update () {
j = Random.Range (1, 4); // this should give j values like=(1,2,1,3,2,1)
// and not this = (1,1,2,2...) the numbers should not repeat simultaneously.
Inst();
}
void Inst(){
if (j == 1) {
//instantiate obj1
}
else if (j == 2) {
instantiate obj2
}
else if (j == 3) {
instantiate obj3
}
}
谢谢!
【问题讨论】:
-
跟踪前一个值,不要让它在下一次生成该值
-
您正在搜索shuffle
-
我应该怎么做?每次使用 if 进行比较?
-
使用递归。每次生成随机数时,将其添加到 List
。如果 theList.Contains() 你的随机数,递归你的函数,直到产生一个新的、唯一的数字。 -
谨防在接受的答案中使用
while循环来执行此操作。请参阅副本了解如何在没有 while 循环的情况下执行此操作。