Array []中的Sprite []不起作用

时间:2018-06-10 18:58:39

标签: c# unity3d

在我目前的Unity项目中,我有一个带有Array[]的脚本,我想添加到此Array[1]一个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;,而不是在我的Start-function中编写这段代码:

        ObjectTypestobuy[0] = Characters;
        ObjectTypestobuy[1] = Helmets;
        ObjectTypestobuy[2] = Weapons;
        ObjectTypestobuy[3] = Mantles;
        ObjectTypestobuy[4] = Shields;

//..............................................

这是关于Start-function的代码:

    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

......但遗憾的是没有用:(

2 个答案:

答案 0 :(得分:0)

尝试:

Sprite[,] ObjectTypestobuy

如果您希望所有数组具有相同的长度。或者:

Sprite[][] ObjectTypestobuy

如果您希望每行都有不同大小的数组。

您可以按以下方式获取值:

ObjectTypestobuy[I, j]

在第一个案例或:

ObjectTypestobuy[i][j]

在第二种情况下。

答案 1 :(得分:0)

Array是一个抽象类,因此您无法引用它。如果你想存储一些sprite,我建议你使用

List<Sprite[]> objectTypestobuy = new List<Sprite[]>();

这种方法更加简单和清洁。