如何比较Unity中GameObject的名称

所以我正在做简单的游戏,把正确的答案放在正确的位置 . 这就是当你把正确的贴纸放在插槽上时你得分 . 例如,如果你把贴纸“a”放到插槽“b”,那你得到了一点 . 然后贴纸“a”,贴纸成为插槽“b”的孩子 . 问题是,当我使用游戏对象的名称它不起作用,我尝试使用debug.log来显示分数,但它不起作用 . 此脚本是插槽的组件 . draghandler来自另一个脚本,脚本是贴纸的组成部分 . 这是代码

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;

public class 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

}

如果我的解释中缺少某些内容,请告诉我 . 谢谢 .

回答(1)

2 years ago

我看不到拖动处理程序的代码,但是在释放后它会丢弃该项吗?如果是这样,它可能没有被拖动的项目 . 因此,当您检查DragHandler.itemBeingDragged时,它可能会返回null .