2016-05-22 8 views
0

私は、ボタンの 'クリック時(On)'コンポーネントを使用するときに、配列のサイズを取得しようとしています。 voidは実行され(Debug.Logを出力しますが)、配列は0として返されます。Input.GetKeyDownを使用して同じインスタンス内のカウントサイズを読み取ると、正しい値が返されます。しかし、私がKeyDownが実行していたのと同じ正確な関数を使用しようとすると、 'On Click()'コンポーネントが0を返します。Unity OnClick()

私はこの

 if (Input.GetKeyDown(KeyCode.T)) 
     { 
      useItem(); 
     } 

ようにそれをuseItemsを実行したときに

private int getItems() 
{ 
    return itemsInInv.Count; 
} 
public void useItem() 
{ 
    Debug.Log(getItems()); 
    //sortItems(); 
} 

を以下のように換言すれば、私の 'クリック時' 'useItems()'

useItemsを実行していることです完璧な値を返しますが、オブジェクトのOn Clickコンポーネントから参照すると、Countのサイズとして0が返されます。


私はをクリックしてコンポーネントのUI要素をリストからゲームオブジェクトを削除しようとすると問題

を説明する別の方法、火災は、リストからオブジェクトを削除しないであろう機能。 Destroy()で表示されているオブジェクトのみが削除されます。その後、List.Countで0を返します。 i「はEventSystem.current.currentSelectedGameObject」を使用してオブジェクトを削除するには、同じコードをやって入力して機能を発射する場合

しかし、それは100%完全に動作します。なぜOn Clickの発射機能で同じ正確なコードが動作しないのですか?

 if (Input.GetKeyDown(KeyCode.Z)) 
     { 
      var obj = EventSystem.current.currentSelectedGameObject; 
      Destroy(obj); 
      itemsInInv.Remove(obj.gameObject); 
      Debug.Log(itemsInInv.Count); 
      Debug.Log("You used a " + obj.name); 
      sortItems(); 
     } 

^thatsコードです。オブジェクトをクリックした後に 'Z'を押すとうまく動作します。しかし、そのコードを直接起動した関数から実行すると、list.countで0が返されます。

+0

あなたはインスペクタでのOnClickのスクリーンショットを投稿することができなかったオブジェクトをインスタンス化どこ? –

答えて

0

私は私の問題への解決策を見つけると、問題が何だったかわかりませんが、私は手動で特定の機能のためのリスニングの代わりに、インスペクタの一つに組み込まれて使用してイベントリスナーを追加できませんでした。

だから、私はまた、これは

items.GetComponent<Button>().onClick.AddListener(() => { useItem(); });