我是C#编程的初学者,我正在尝试Unity。
当我尝试从数组列表(列表)中实例化gameObject
随机数,但是我有一个错误(磁带对象不能用作tope parapete T.)而我找不到解决方案。
我有6个游戏对象:
public gameobject Red;
public gameobject yellow;
etc...
到6.
对于添加或远程对象,cont具有arraylist动态。像这样:
public ArrayList list = new ArrayList();
然后,我添加了游戏对象:
list.Add (Red);
list.Add(Yellow);
为了完成,我从arraylist(有时是不同数量的对象)中实例化随机对象
color = Instantiate(list[random.range(0, list.Length)]);
但未找到,并有此错误:
磁带对象不能用作tope parapete T.
答案 0 :(得分:1)
这是一个关于从列表中选择随机项的问题。我建议使用List<T>
而不是ArrayList
。这是一个例子:
static void Main()
{
var Red = new GameObject();
var Yellow = new GameObject();
List<GameObject> gameObjects = new List<GameObject>() { Red, Yellow };
var randomGameObject = gameObjects[(new Random()).Next(gameObjects.Count)];
// color = Instantiate(randomGameObject)
//Console.WriteLine(randomGameObject);
Console.ReadLine();
}
答案 1 :(得分:0)
Instantiate
方法可能是这样声明的:
Color Instantiate(GameObject gameObject)
{
// ...
}
但ArrayList
不是强类型的,即它返回object
类型的项目。因此,您必须将项目转换为GameObject
:
color = Instantiate((GameObject)list[random.range(0, list.Length)]);
但更好的解决方案是使用强类型通用列表List<GameObject>
。它与ArrayList
非常相似,但会返回键入GameObject
的项目。
public List<GameObject> list = new List<GameObject>();
list.Add(Red);
list.Add(Yellow);
color = Instantiate(list[random.range(0, list.Count)]);