C# 数组[]中的精灵[]不是';行不通

C# 数组[]中的精灵[]不是';行不通,c#,unity3d,C#,Unity3d,在我当前的Unity项目中,我有一个带有Array[]的脚本,我想添加到这个Array[1]aSprite[] 这可能吗 这是我代码的一部分: Array[] ObjectTypestobuy; public Sprite[] Characters; public Button[] ObjectButtons; //... ObjectTypestobuy[1] = Characters; //Start Method //... ObjectButtons[index].transfo

在我当前的Unity项目中,我有一个带有
Array[]
的脚本,我想添加到这个
Array[1]
a
Sprite[]

这可能吗

这是我代码的一部分:

Array[] ObjectTypestobuy;
public Sprite[] Characters;

public Button[] ObjectButtons;

//...

ObjectTypestobuy[1] = Characters; //Start Method

//...
ObjectButtons[index].transform.gameObject.GetComponent<Image>().sprite = ObjectTypestobuy[currenttab[1]]; //this line of code isn't working. it shows an error at 'currenttab[1]'
这是代码过启动功能:

    public Sprite[][] ObjectTypestobuy;

    public Sprite[] Characters; 
    public Sprite[] Helmets;
    public Sprite[] Weapons;
    public Sprite[] Mantles;
    public Sprite[] Shields;
然后我想让这行代码正常工作:

ObjectButtons[index].transform.gameObject.GetComponent<Image>().sprite = ObjectTypestobuy[currenttab][index]; // index is an integer
ObjectButtons[index].transform.gameObject.GetComponent().sprite=ObjectTypestobuy[currenttab][index];//索引是一个整数
…但遗憾的是,它没有起作用:(

试试:

Sprite[,] ObjectTypestobuy
如果希望所有数组具有相同的长度。或者:

Sprite[][] ObjectTypestobuy
如果要在每行上使用不同大小的数组

您可以通过以下方式获取值:

ObjectTypestobuy[I, j]
在第一种情况下,或:

ObjectTypestobuy[i][j]

在第二种情况下。

Array
是一个抽象类,因此您无法直接初始化它(除非您内联实现它)。如果您想存储精灵集合并像那样使用它们,只需使用良好的旧列表即可。 例如:

List objectTypestobuy=new List();

这种方法更加简单和干净。

数组类是抽象的。你应该初始化它。一些东西,比如:Array[]ObjectTypestobuy=new string[5];我认为这对我不起作用:(…还有其他方法吗?那就是创建一个
Array
s的数组。如果你不能使用实际的
Sprite[]
然后您可以使用
Arraylist
,但由于缺乏类型安全性,通常不建议使用它。如果您的实际问题是
currenttab[1]
的错误,那么什么是
currenttab
?“currenttab”只是一个简单的“int”。例如可以是“ObjectTypestobuy[1[1]”“为什么向下投票?c#/Unity中的多维数组实际上是用
[,]
声明的。我也在问自己同样的问题。字段列表在Unity中根本不像数组那样惯用。@Jul那么,你应用了这个建议了吗?这个答案对你有帮助吗?如果是,你可以将其标记为“已接受”,因此,其他有相同问题的人将更容易找到解决方案。
ObjectTypestobuy[i][j]
List<Sprite[]> objectTypestobuy = new List<Sprite[]>();