今天我在昨天的基础上继续修复bug,我发现,为什么playercards的数组长度为0,是因为这是玩家的卡牌,而非我随机抽出来的卡牌的集合
public void OnClickedOpen()
{i = UnityEngine.Random.Range(0, cardInfo.Length);GameObject newCard = Instantiate(cardObject, cardPool.transform);newCard.gameObject.GetComponent<ShowCardInfo>().card = CardsCollection.CardIns(i, cardInfo);cards.Add(newCard);}
我只是建立了一个game object类的链表存放newcard,而并没有创建card类的链表来存放生成的卡牌的数据,于是我在这个方法的下面写了一行:
List<Card> cardList=new List<Card>();
cardList.Add(newCard.gameObject.GetComponent<ShowCardInfo>().card);
这个cardList里面存放的就是临时生成的Card的数据。
接下来就是把playdata里面的Sava Data()改为SavaData(List<Card> cardList)就ok了
附上我最终修改的代码。
public void SaveData(List<Card> cardList)
{playerCards = new int[cardList.Count];//保存玩家数据string filePath = Application.dataPath + "playerData.csv";Debug.Log("cards.lenth =" + playerCards.Length)List<string> datas = new List<string>();datas.Add("coin," + playerCoins.ToString());for (int i = 1; i <= 4; i++)//计数相同的卡牌{int k = 0;for (int j = 0; j < cardList.Count; j++){if (i == cardList[j].Id ){k++;}}datas.Add("card," + i + "," + k);}//保存进入路径File.WriteAllLines(filePath, datas);
}
这样的话就可以把生成的卡牌放入玩家数据的.csv文件中,并且计数了!
今天先这样。