Unity List仅存在第一遍

时间:2015-04-13 21:35:37

标签: c# unity3d

我有一个小例程来检查条目是否存在:

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);
}

1 个答案:

答案 0 :(得分:0)

只需添加mycart = new cart();在add语句使其工作之前,在make_cart_text的第一行。 谢谢你的帮助。 杰夫