2016-08-04 37 views
0

私は正しい答えを正しいスロットに入れるために簡単なゲームを作っています。あなたがスコアを持っているスロットに右のステッカーを置くときです。 ステッカー "a"をスロット "b"に置くとポイントが得られます。ステッカー "a"の場合、ステッカーはスロット "b"の子になります。 問題は、私はそれが動作しないgameobjectの名前を使用して、私はスコアを表示するためにdebug.logを使ってみましたが、それdoesnt作業。このスクリプトはスロットの構成要素です。 draghandlerは別のスクリプトのもので、スクリプトはステッカーのコンポーネントです。ここ はコードUnityのGameObjectの名前を比較する方法

public void OnDrop (PointerEventData eventData) 
{ 
    if (!item) { 
     DragHandler.itemBeingDragged.transform.SetParent (transform); 
     if (DragHandler.itemBeingDragged.gameObject.name == "b" && DragHandler.itemBeingDragged.transform.parent.name == "slot2") { 
      score = score + 25; 
      nilai = score.ToString(); 
      Debug.Log ("score: "+nilai); 
     }}} 

ですが、私はスロットの名前やステッカーを表示するには、このコードを使用する場合、これがdraghandler

using UnityEngine; 

使用するためのコードである

public void OnDrop (PointerEventData eventData) 
{ 
    if (!item) { 
     DragHandler.itemBeingDragged.transform.SetParent (transform); 
     Debug.Log ("slot: "+DragHandler.itemBeingDragged.transform.parent.name + "item : "+DragHandler.itemBeingDragged.gameObject.name); 
     } 
    } 

仕事ですSystem.Collections; UnityEngine.EventSystemsを使用しています。

パブリッククラスDragHandler:私の説明に欠けている何かがある場合MonoBehaviour、IDragHandler、IBeginDragHandler、IEndDragHandler {

public static GameObject itemBeingDragged; 
Vector3 startPosition; 
Transform startParent; 

#region IBeginDragHandler implementation 

public void OnBeginDrag (PointerEventData eventData) 
{ 
    itemBeingDragged = gameObject; 
    startPosition = transform.position; 
    startParent = transform.parent; 
    GetComponent<CanvasGroup>().blocksRaycasts = false; 
} 

#endregion 

#region IDragHandler implementation 
public void OnDrag (PointerEventData eventData) 
{ 
    startPosition = Input.mousePosition; 
    //Debug.Log ("namanya : " + itemBeingDragged.name); 
} 
#endregion 

#region IEndDragHandler implementation 

public void OnEndDrag (PointerEventData eventData) 
{ 
    itemBeingDragged = null; 
    GetComponent<CanvasGroup>().blocksRaycasts = true; 
    if (transform.parent == startParent) { 
     transform.position = startPosition; 
    } 
} 

#endregion 

}

は私に知らせてください。 ありがとうございます。

答えて

0

ドラッグハンドラのコードは表示されませんが、リリース後にアイテムが削除されますか?もしそうなら、それはドラッグされたアイテムを持っていないかもしれません。 DragHandler.itemBeingDraggedをチェックするとnullが返されることがあります。

+0

私はdraghandlerコードで質問を編集しました。 OnEndDrag itembeingdragged = null は問題ですか? –

+0

おそらくはい。あなたがドラッグの終了後にitemBeingDraggedをチェックしている可能性があります。 – LongarMD

関連する問題