我有一个小例程来检查条目是否存在:
public class cart {public string name; public int cost; public int amt;}
public string[,] prod_Array = new string[6,2];
public List<cart> cart_array = new List<cart>();
public cart mycart = new cart ();
public void buyProduct (string product) {
string item = "";
switch (product) {
case "fishTank":
cost = int.Parse(prod_Array[5,1]);
if(cart_array.Exists(cart => cart.name == "Fish Tank") ){
cart qty = cart_array.Find(cart => cart.name == "Fish Tank");
qty.amt= qty.amt+1;
fillCartTxt(cart_count);
} else {
Debug.Log("None found");
item = "Fish Tank";
make_cart_text(item, cost);
}
break;
case "growBed":
cost = int.Parse(prod_Array[4,1]);
if(cart_array.Exists(cart => cart.name == "Grow Bed")){
cart qty = cart_array.Find(cart => cart.name == "Grow Bed");
qty.amt= qty.amt+1;
fillCartTxt(cart_count);
} else {
item = "Grow Bed";
make_cart_text(item, cost);
}
break;
}
如果您选择&#34;鱼缸&#34;它是第一次完美。但是,如果你选择&#34;成长床&#34;之后再返回并选择&#34; Fish Tank&#34;再次,它失败并转到else语句来创建一个新文本。 为什么它只在第一次工作? 忘了添加这个:
void make_cart_text(string item, int cost){
mycart.name = item;
mycart.cost = cost;
mycart.amt = 1;
int ny = 0;
cart_array.Add(mycart);
cart_count = cart_array.Count;
if (cart_count == 1) {
ny =50;
} else if (cart_count > 1) {
ny = cart_count * 20;
}
GameObject cart_line = GameObject.Instantiate(
Resources.Load("cart_line"),
new Vector3(19f,ny,0),Quaternion.identity)as GameObject;
cart_line.name= "carttext"+cart_count;
GameObject gc2 = GameObject.Find ("Cart");
cart_line.transform.SetParent(gc2.transform, false);
fillCartTxt(cart_count);
}
答案 0 :(得分:0)
只需添加mycart = new cart();在add语句使其工作之前,在make_cart_text的第一行。 谢谢你的帮助。 杰夫