我正在统一制作3D游戏,使玩家可以与图像和笔记(大约3-4段)进行交互。
我创建了画布,当玩家与地面上的音符交互时,菜单(画布)弹出。
我想知道,有什么方法可以将带有Image gameObjects的字符串变量存储在同一数组中? 另外,我将在画布上使用这些图像,因此我应该将其创建为图像还是Sprite?
答案 0 :(得分:0)
如果希望它们成为UI组件,则应创建图像组件。
我想您可以通过将列表定义为两个共同祖先对象来实现此目的。 Object
:
var list = new List<object>();
list.Add("Hello");
list.Add(5);
list.Add(MyImage);
foreach (object obj in list)
{
if (obj is string)
{
Debug.Log(obj.ToString());
}
}
答案 1 :(得分:0)
您应该使用从两者继承的通用基本类型。如果您想存储的所有东西都是类型MonoBehaviour
的情况下,将其用作基本类型而不是object
是很有意义的。
public List<MonoBehaviour> List = new List<MonoBehaviour>();
这至少将为您提供MonoBehaviour
/ Component
实现的所有功能。听起来例如例如后来在.transform.position
中被打扰。
如果您要谈论诸如Image
和Text
之类的UI东西,您甚至可以使用UI.MaskableGraphic
作为常见类型
public List<MaskableGraphic> List = new List<MaskableGraphic>();