有没有一种方法可以将Image和string变量存储在一个数组中? (统一)

时间:2019-05-27 15:19:05

标签: c# arrays unity3d

我正在统一制作3D游戏,使玩家可以与图像和笔记(大约3-4段)进行交互。

我创建了画布,当玩家与地面上的音符交互时,菜单(画布)弹出。

我想知道,有什么方法可以将带有Image gameObjects的字符串变量存储在同一数组中? 另外,我将在画布上使用这些图像,因此我应该将其创建为图像还是Sprite?

2 个答案:

答案 0 :(得分:0)

  1. 如果希望它们成为UI组件,则应创建图像组件。

  2. 我想您可以通过将列表定义为两个共同祖先对象来实现此目的。 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中被打扰。

如果您要谈论诸如ImageText之类的UI东西,您甚至可以使用UI.MaskableGraphic作为常见类型

public List<MaskableGraphic> List = new List<MaskableGraphic>();

提供更多与UI相关的属性,例如colorcanvas