Unity With C # script: Tipo de dados da classe Passando valor da classe com dados duas vezes estranhos

Eu recebi uma pergunta simples e estranha de passar valor para variável de classe de tipo de dados.

o código como abaixo:

void AddItem(int ID) {
    for (int i = 0; i < database.items.Count; i++) {
        if(database.items[i].itemID == ID) {
            itemxs = new item (database.items [i].itemName,
                              database.items [i].itemID,
                              database.items [i].itemDesc,
                              database.items [i].harvest,
                              database.items [i].itemTime,
                              database.items [i].stdprice,
                              database.items [i].hightprice,
                              database.items [i].itemStock,
                              database.items [i].Lvlunlock,
                              database.items [i].rawTree,
                              database.items [i].itemType,
                              database.items [i].itemProd,
                              database.items [i].itemIcon);

            Debug.Log ("Item Icon 1 : " + database.items[i].itemIcon); // This appear "Corps/Lemon"
            Debug.Log ("Item Icon 2 : " + itemxs.itemIcon); // This appear "Corps/Lemon/Lemon" **even though I just passing value from code itemxs = new item (database.items [i].itemName,...etc)** it is wierd

            CheckInventoryExist(itemxs);
            break;
        }
    }
}

itemicon é a fonte do nome da base: basename + itemName; database.items [i] .itemicon contém"Corpo / Limão" O problema é onde eu debug.log database.items [i] .itemicon continua a mesma string que é"Corpo / Limão", Mas quando eu coloco"itemxs = novo item (database.items [i] .itemName, .... etc" e então eu debug.log itemxs.itemicon ele contém"Corpo / Limão / Limão"

O que está acontecendo ?

obrigado

Dennis

Abaixo está a classe:

item.cs

using UnityEngine;
using System.Collections;

// Make Class Item
public class item {
    public string itemName;
    public int itemID;
    public string itemDesc;
    public string itemIcon;
    public GameObject itemModel;
    public int itemTime;
    public int hightprice;
    public int stdprice;
    public int itemStock;
    public int harvest;
    public RawTree rawTree;
    public ItemType itemType;
    public ItemProd itemProd;
    public int Lvlunlock;
    private string baseName;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    void Awake () {

    }

    public enum ItemType {
        Raw,
        Admirable,
        Valuable
    }

    public enum RawTree {
        BigTree,
        SmallTree,
        Field,
        None
    }

    public enum ItemProd {
        AnimalBarm,
        Mining,
        Corps,
        Dairy,
        JuiceJamMaker,
        Merchant,
        Kitchen,
        Bakery,
        CraftHouse
    }

    public item (string name, int ID, string desc, int harvestx, int time, int stdpricex, int hightpricex, int stock, int Lvlunlockx, RawTree RawTree, ItemType type, ItemProd prod, string folder) {
        itemName = name;
        itemID = ID;
        itemDesc = desc;
        harvest = harvestx;
        itemTime = time;
        stdprice = stdpricex;
        hightprice = hightpricex;
        itemStock = stock;
        Lvlunlock = Lvlunlockx;
        rawTree = RawTree;
        itemType = type;
        itemProd = prod;
        this.baseName = folder + "/";
        itemIcon = this.baseName + itemName;
    }

    public item() {

    }
}

então itemDatabase.cs

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class itemDatabase : MonoBehaviour {
    public List<item> items = new List<item>();

    // Use this for initialization
    void Start () {
        // Add Data To Item List With Class Item

        // ------------------------------- Item Corps (Raw - Big Tree) ------------------------------- //
        items.Add (new item ("Lemon", 1, "Honey Lemon", 9, 1020, 75, 158, 0, 1, item.RawTree.BigTree, item.ItemType.Raw, item.ItemProd.Corps, "Corps"));

    }

    // Update is called once per frame
    void Update () {

    }
}

Quando eu coloco este código:

 itemxs = new item (database.items [i].itemName, // This contain "Lemon"
                                      database.items [i].itemID,
                                      database.items [i].itemDesc,
                                      database.items [i].harvest,
                                      database.items [i].itemTime,
                                      database.items [i].stdprice,
                                      database.items [i].hightprice,
                                      database.items [i].itemStock,
                                      database.items [i].Lvlunlock,
                                      database.items [i].rawTree,
                                      database.items [i].itemType,
                                      database.items [i].itemProd,
                                      database.items [i].itemIcon);

itemName contém: "Limão";

ItemICon contém: "Corps /" + itemName; Você pode verificá-lo no arquivo itemDatabase.cs e o construtor está em item.cs.

portanto, o itemIcon do resultado deve ser: "Corpo / Limão" Mas

Por que itemxs.itemIcon recebeu o itemName duplo? por exemplo: "Corps / Lemon / Lemon".

questionAnswers(2)

yourAnswerToTheQuestion