[英]How to compare name of a GameObject in Unity
因此,我正在制作简单的游戏,以在正确的位置输入正确的答案。 这是当您在插槽上贴上正确的标签时得到的分数。 对于该示例,如果将标签“ a”放在插槽“ b”上,则说明正确。 然后标签“ a”,该标签成为插槽“ b”的子级。 问题是当我使用游戏对象的名称不起作用时,我尝试使用debug.log来显示得分,但它不起作用。 该脚本是插槽的组成部分。 拖动处理程序来自另一个脚本,该脚本是贴纸的组成部分。 这是代码
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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.