所以我正在做简单的游戏,把正确的答案放在正确的位置 . 这就是当你把正确的贴纸放在插槽上时你得分 . 例如,如果你把贴纸“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 ().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 ().blocksRaycasts = true;
if (transform.parent == startParent) {
transform.position = startPosition;
}
}
#endregion
}
如果我的解释中缺少某些内容,请告诉我 . 谢谢 .
这篇博客讲述了作者在Unity游戏中实现物品拖放并根据放置正确位置得分的遭遇。作者遇到的问题是,当尝试通过游戏对象的名称来判断得分条件时,代码无法正常工作。然而,当仅打印物体和插槽的名称时,代码表现正常。博客提供了相关的OnDrop事件处理函数和DragHandler脚本代码片段,展示了如何处理物体拖放和检查匹配。

3108

被折叠的 条评论
为什么被折叠?



