【发布时间】:2017-04-19 20:21:59
【问题描述】:
我正在尝试从列表中随机选择两个项目。然后将这些项目设置为在场景中可见。问题是,有时它会选择在上一个循环中选择的那个。
如何排除第一个选择?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BeamManager3 : MonoBehaviour {
public List<GameObject> LargeBeamObject = new List<GameObject>();
void Start () {
LargeBeamPlayerGenerator();
}
void LargeBeamPlayerGenerator(){
for (int i = 0; i < 2; i++){
int randomGameObject = Random.Range(0,4);
GameObject selectedGameObject = LargeBeamObject[randomGameObject];
MeshRenderer visible = selectedGameObject.GetComponent<MeshRenderer>();
visible.enabled = true;
}
}
}
【问题讨论】:
-
选择第二个时,如果选择相同,请重试。或者在选择第二个之前从选项中删除第一个选择。这么多的可能性。
-
从列表中删除第一个选择,然后再次选择新列表长度 -1 作为 Random.Range 的第二个参数。顺便说一句,这是 Unity 吗?如果是这样,应该标记它。
-
您也可以随机重新排列列表,然后取出前两项。但是,如果该答案的评论者知道他们在说什么,那么 msitt 的解决方案似乎是合理的。