我正在寻找一种方法来访问由另一个数组持有的数组中的数组项。我不太清楚:/我有2个脚本:Game_Manager.cs和Board.cs。在Board.cs我有以下变量。(数组大小在启动时会自动调整):public Transform[] Clubs_Bottom = new Transform[0];public Transform[] Clubs_Top = new Transform[0];public Transform[] Spades_Left = new Transform[0];public Transform[] Spades_Right = new Transform[0];public Transform[] Diamonds_Left = new Transform[0];public Transform[] Diamonds_Right = new Transform[0];public Transform[] Hearts_Bottom = new Transform[0];public Transform[] Hearts_Top = new Transform[0];在Game_Manager.cs我有以下方法:public void setCardBoardSlot(int Hand_CardNumber){ Array[] ArrayList = new Array[8]; // The card arrays // Fill our array list ArrayList[0] = Board.Script.Diamonds_Left; ArrayList[1] = Board.Script.Diamonds_Right; ArrayList[2] = Board.Script.Clubs_Top; ArrayList[3] = Board.Script.Clubs_Bottom; ArrayList[4] = Board.Script.Spades_Left; ArrayList[5] = Board.Script.Spades_Right; ArrayList[6] = Board.Script.Hearts_Bottom; ArrayList[7] = Board.Script.Hearts_Top; // Acces Array item 1's array, and the first item in that array ArrayList[0[0]].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();}在我找出如何访问每个数组项之前,此方法仅是说明性的。使用此代码时,我在倒数第二行收到以下错误:Cannot apply indexing with [] to an expression of type 'int'
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
Array类本质上包含一个通用数组-因此Array数组可以包含不同类型的数组(在运行时可能会更改)。访问该数组的元素将返回Array类的单个实例(而不是数组本身),因此使用ArrayList [0] [0]将导致编译器错误“无法将[]的索引应用于'Array'类型的表达式”。
使用Array类的数组,您需要将数组元素显式转换为您的数组类型(这是Transform的数组),然后以这种方式访问第一个元素:
((Transform[])ArrayList[0])[0].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();
由于所有包含的数组都是同一类型-一种更简单的方法是使用Transform数组的数组-您对ArrayList的声明将变为:
Transform[][] ArrayList = new Transform[8][];
每个数组元素的分配将保持不变,然后您可以简单地使用:
ArrayList[0][0].GetComponent<SpriteRenderer().sprite=SpriteManager.Script.setActive();
请注意,ArrayList是C#中定义的类类型-尽管我认为编译器可以根据上下文确定要引用的变量,但最好避免将.Net类名用作变量名。
- 1 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消