2016-08-04 114 views
0

因此,我正在製作一個簡單的遊戲,將正確的答案放在正確的位置。這是當你把正確的貼紙放在你得分的插槽上時。 例如,如果你把標籤「a」插入槽「b」,那麼你有點。然後貼紙「a」,貼紙成爲插槽「b」的孩子。 問題是,當我使用的遊戲對象的名稱它不工作,我試圖使用debug.log來顯示分數,但它不工作。此腳本是插槽的組件。拖拽手來自腳本是貼紙組件的另一個腳本。 下面是代碼如何比較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); 
     }}} 

,但是當我用這個代碼來顯示插槽的名稱和它的工作貼紙

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

這是使用draghandler

using UnityEngine; 

代碼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