2016-06-28 4 views
1

データ型のクラス変数に値を渡すのが簡単な質問と奇妙なことがあります。コードは以下のようなUnity with C#スクリプト:クラスデータ型クラスからデータを渡す奇妙な

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あるベース名から源:ベース名+ itemNameに。私は[i]が"隊/レモン" で同じ文字列まだそれ.itemicon database.itemsがDEBUG.LOGどこ database.items [i]は.itemicon含ま"隊/レモン" は問題があります、 しかし、私は"itemxs =新しいアイテム(database.items [i]の.itemName、....など"を入れた後、私はそれが"隊/レモン/レモン"

が含まれているitemxs.itemicon DEBUG.LOGとき

何が起こっているのですか?

ありがとうございました

デニス以下

クラスです:

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() { 

    } 
} 

その後、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() { 

    } 
} 

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 contains: "Lemon";

ItemIConには、 "Corps /" + itemName; itemDatabase.csファイルでチェックすることができ、コンストラクタはitem.cs.にあります。

ので、結果はitemIconでなければなりません:itemxs.itemIconはダブルitemNameにを得たのはなぜ "隊/レモン" でも

?例えば: "兵士/レモン/レモン"。

this.baseName = folder + "/"; 
itemIcon = this.baseName + itemName; 

どこfolder == Corpsthis.baseName == "Corps/Lemon/"itemName == "Lemon"ので、あなたが取得する必要があります正確に何を持っている:あなたはそれをやっているitemコンストラクタで

+1

をこの魔法のコンストラクタコードで何が起こっていただきました!あなたは言うことはできますか? –

+0

私はクラスでコードを更新しました。あなたはそれを確認してください。 –

+0

sidenote: 'item'クラスから' Start'、 'Awake'、' Update'を削除します。 'MonoBehaviour'から継承せず、そのために(または少なくとも同じことをやっていない)それらを持つことはできません。また、クラス名は常に大文字で始める必要があります。 –

答えて

1

。あなたのコンストラクタで

+0

itemDatabase:items.Add(新規アイテム( "Lemon"、1、 "Honey Lemon"、9,1020,75,158,0,1、item.RawTree.BigTree、item.ItemType.Raw、item.ItemProd。兵士、 "隊")); .......とパラメータiの最後には "兵士"だけが入力されています。したがって、this.baseName = folder = "Corps /"はレモンなしです。 itemNameを削除しようとしました。 itemIconには "Corps /"のみが含まれます。何が問題ですか ? –

-2

this.baseName = folder + "/"; // if folder = "Corps/Lemon" from database.items[i].itemIcon 
itemIcon = this.baseName + itemName; // it will update itemIcon to "Corps/Lemon" + "/" + "Lemon" 

あなたは今すぐ手に入れましたの?

itemIconの値を直接割り当てるのではなく、直接割り当てることができます。

はあなたのコンストラクタでこれを行います

itemIcon = folder; 

乾杯

+0

itemDatabase:items.Add(新しいアイテム( "Lemon"、1、 "Honey Lemon"、9,1020,75,158,0,1、item.RawTree.BigTree、item.ItemType.Raw、item.ItemProd。兵士、 "隊")); .......とパラメータiの最後には "兵士"だけが入力されています。したがって、this.baseName = folder = "Corps /"はレモンなしです。 itemNameを削除しようとしました。 itemIconには "Corps /"のみが含まれます。何が問題ですか ? –

+0

元のコードから: 'database.items [i] .itemIcon //これは" Corps/Lemon "を含みます);' itemIcon'文字列 "Corps"ではありません –

+0

上記の行を見てください:Debug .Log(database.items [i] .itemIcon); //デバッグ中これには依然として "Corps/Lemon"が含まれています Debug.Log(itemxs.itemIcon); // While Debugこれには "Corps/Lemon/Lemon"が含まれます。 –

関連する問題