[英]why is my loop only seeing the value of the first array element?
function Deal()
{
var suffledDeck:Array;
var playerOneCards: Array;
var playerTwoCards: Array;
var first:int =0;
var second:int = 1;
suffledDeck = new Array();
playerOneCards = new Array();
playerTwoCards = new Array();
//var CardLeft:int = Deck.length;
for(var i = 0; i < Deck.length; i++)
{
Debug.Log(Deck.length);
var ranNum = Random.Range(1,Deck.length);
suffledDeck.Add(Deck[ranNum]);
Debug.Log("suffled deck: " + suffledDeck.length);
}
//var halfDeck: int = (suffledDeck.length / 2);
for(var j = 0; j <=26 ; j++)
{
Debug.Log(first);
Debug.Log(second);
playerOneCards.Add(suffledDeck[first]);
playerTwoCards.Add(suffledDeck[second]);
Debug.Log(playerOneCards[first].img);
Debug.Log(playerTwoCards[second].img);
first += 2;
second += 2;
}
}
当我开始将数组拆分为2个单独的数组时,它开始忽略除第一个元素以外的每个元素。 suffleDeck []加载了52个Card对象,并且我试图拆分数组,以便每个玩家都可以拥有自己的套牌。
用于调试目的的控制台窗口: http : //puu.sh/2dqZm
我相信问题是var ranNum = Random.Range(1,Deck.length)
。
ranNum
应该生成一个介于0到Deck.length - 1
之间的随机索引,因为数组索引从0(而不是1)开始。
问题在于这些日志记录语句:
Debug.Log(playerOneCards[first].img);
Debug.Log(playerTwoCards[second].img);
first
和second
是suffledDeck
有效索引,但是每个玩家的套牌中只有一半的牌。 尝试在两个日志记录语句中都使用j
作为下标,而不是first
或second
。
您还应该将循环限制为j < 26
,而不是j <= 26
。 实际上,您正在尝试在每个玩家的卡组中放入27张牌。
因为:
Debug.Log(playerTwoCards[second].img);
在这里, second
值是1,而您的数组仅包含一项为零的项目。 导致ArgumentoutofRangeException
。
所以尝试:
for(var j = 0; j <=26 ; j++)
{
Debug.Log(first);
Debug.Log(second);
playerOneCards.Add(suffledDeck[first]);
playerTwoCards.Add(suffledDeck[second]);
Debug.Log(playerOneCards[j].img);
Debug.Log(playerTwoCards[j].img);
first += 2;
second += 2;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.