在我目前的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
......但遗憾的是没有用:(
答案 0 :(得分:0)
尝试:
Sprite[,] ObjectTypestobuy
如果您希望所有数组具有相同的长度。或者:
Sprite[][] ObjectTypestobuy
如果您希望每行都有不同大小的数组。
您可以按以下方式获取值:
ObjectTypestobuy[I, j]
在第一个案例或:
ObjectTypestobuy[i][j]
在第二种情况下。
答案 1 :(得分:0)
Array是一个抽象类,因此您无法引用它。如果你想存储一些sprite,我建议你使用
List<Sprite[]> objectTypestobuy = new List<Sprite[]>();
这种方法更加简单和清洁。