我正在从列表中生成对象,所以我让他们找到已经存在于场景中的父对象。问题是Random.Range()不能像我想的那样工作。我希望列出的对象生成一个随机的父对象,相反,它们会产生相对于列表顺序的父对象。
实施例。 0,1,2,3,4,5,6,7,8,9 =差 防爆。 8,3,1,4,6,3,7,9,5,2 =好 洛尔
var theRange = Random.Range(obj1.Length,obj1.Length);
for(var i: int = 0; i < theRange; i++){
var obj2 : GameObject = obj1[i];
if(obj2.transform.childCount == 0){
objfromList.transform.parent = obj2.transform;
objfromList.transform.localPosition = Vector3(0,-2,0);
}
}
非常感谢
答案 0 :(得分:1)
跟进我的评论,听起来你只是想要一个随机播放功能。这是一个简单的Fisher-Yates shuffle:
void shuffle(int[] a){
for(int i = a.Length-1; i>=0; i--){
int j = Random.Range(0,i);
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
void usage(){
int[] a = {0,1,2,3,4,5}; // assumes obj1.Length = 6
shuffle(a);
for(int i = 0; i < a.Length; i++){
GameObject obj2 = obj1[a[i]];
GameObject objFromList = GetNextObject(); // dummy method grabbing next list object
objFromList.transform.parent = obj2.transform;
objFromList.transform.localPosition = Vector3(0,-2,0);
}
}
这可以帮助您满足您的需求。如果obj1
的顺序不重要,您可以直接对其进行随机播放,而不是在我的示例中使用a
之类的辅助数组。