如何比较Unity中GameObject的名称
问题描述:
因此,我正在制作一个简单的游戏,将正确的答案放在正确的位置。这是当你把正确的贴纸放在你得分的插槽上时。 例如,如果你把标签“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
}
如果有什么东西跟我解释失踪让我知道。 谢谢。
答
我看不到拖动处理程序的代码,但它释放它后放下项目?如果是这样,它可能没有被拖动的项目。所以也许当你检查DragHandler.itemBeingDragged时,它可能会返回null。
我刚刚使用draghandler代码编辑我的问题。 OnEndDrag itembeingdragged = null 是这个问题吗? –
可能是的。这可能是因为您在拖动结束后检查了itemBeingDragged。 – LongarMD