2016-08-04 186 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