C# 有没有办法在一个数组中同时存储图像和字符串变量?(团结)

C# 有没有办法在一个数组中同时存储图像和字符串变量?(团结),c#,arrays,unity3d,C#,Arrays,Unity3d,我正在unity中制作一个3D游戏,玩家可以与图像和注释交互(大约3-4段) 我创建了画布,当玩家与地面上的笔记交互时,菜单(画布)弹出 我想知道,有没有办法将字符串变量和图像游戏对象存储在同一个数组中? 另外,我将在画布上使用这些图像,所以我应该创建为图像还是精灵 如果希望它们成为UI组件,则应创建图像组件 我想您可以通过将列表定义为两个对象的共同祖先来实现这一点对象: var list=newlist(); 添加(“你好”); 增加(5); list.Add(MyImage); foreac

我正在unity中制作一个3D游戏,玩家可以与图像和注释交互(大约3-4段)

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

我想知道,有没有办法将字符串变量和图像游戏对象存储在同一个数组中? 另外,我将在画布上使用这些图像,所以我应该创建为图像还是精灵

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

  • 我想您可以通过将列表定义为两个对象的共同祖先来实现这一点<代码>对象:

  • var list=newlist();
    添加(“你好”);
    增加(5);
    list.Add(MyImage);
    foreach(列表中的对象对象)
    {
    if(obj是字符串)
    {
    Log(obj.ToString());
    }
    }
    
    您应该使用一个公共基类型,两者都从该基类型继承。如果您要存储的两个对象都是类型
    monobhavior
    ,那么将其用作基本类型而不是
    对象将非常有意义

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

    它提供了更多与用户界面相关的属性,如或。

    最简单的方法是创建一个包含字符串和图像的类,并将该类存储在集合中(数组、列表或其他)。在c#中,有一个“object[]arr”,我们可以在其中存储不同类型的变量(int、string等),但据我所知,这不是Unity的一部分,c#?我99.99%确定Unity没有以某种方式删除系统。c#中的对象:)@runoraca问题是。。你需要它做什么?这样做的目的是什么?您还可以使用tuples private(string-yourString,Image-yoursimage)[]您的数组;问题当然是,这将不是很有用。。。当然可以这样做,但在需要时必须将元素解析为特定类型。
    myImageReference.ToString
    通常只返回与
    myImageReference.gameObject.name
    相同的值(请参阅)。。如果某个东西已经是字符串了,那么为什么还要使用
    ToString
    ?它起作用了!!一直以来,我都试图初始化数组,就像声明局部变量一样(在类内部,但在任何函数外部),我应该在函数内部这样做。当我使用object[]arr时,两个变量都被分配到该数组中。非常感谢你@Fredrik@runoraca
    对象[]
    的问题在于大小是固定的,之后不能添加元素(至少没有那么简单)。
    列表
    是动态的,并且随着您选择的元素而增长add@derHugo,这不是一个建议-更多的是关于如何区分条件语句中不同类型的快速方法。如果对象是字符串,我只是想处理字符串,但是现在回想起来,ToString是非常愚蠢的,因为它不是对字符串执行的操作,呵呵。
    public List<MonoBehaviour> List = new List<MonoBehaviour>();
    
    public List<MaskableGraphic> List = new List<MaskableGraphic>();