我有一个主要基于本教程的库存系统,我目前正在修改它。 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;
}
}