我有一个主要基于本教程的库存系统,我目前正在修改它。 OnBeginDrag并按OnEndDrag预期工作,但是OnDrag,虽然不断更新项目的位置,但不显示项目。它在 期间消失OnDrag,并在它被放入新插槽后重新出现。
这是我的层次结构:
值得注意的是两台相机。据我所知, DungeonGroup(和DungeonUICanvas)使用。DungeonCamera(DungeonGroup直到最近,还是一个完全不同的场景。OnDrag在我整合场景之前按预期工作,让我认为相机问题可能是罪魁祸首。)
这是我目前正在使用的代码:
public class DragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public static GameObject item; //itemBeingDragged
public static Vector3 startPosition;
public static Transform startParent;
public void OnBeginDrag(PointerEventData eventData)
{
item = gameObject;
startPosition = transform.position;
startParent = transform.parent;
GetComponent<CanvasGroup>().blocksRaycasts = false;
transform.SetParent(transform.root);
}
public void OnDrag(PointerEventData eventData)
{
transform.position = Input.mousePosition;
}
public void OnEndDrag(PointerEventData eventData)
{
item = null;
if (transform.parent == startParent || transform.parent == transform.root)
{
transform.position = startPosition;
transform.SetParent(startParent);
}
GetComponent<CanvasGroup>().blocksRaycasts = true;
}
}
