拖放统一,拖动其他UI元素

时间:2017-07-30 23:32:46

标签: c# user-interface unity3d

我有一个带有Grid Layout Group组件的Panel。在里面我得到了一个带有背景图像的插槽面板,在里面我得到了2个图像的预制件。它看起来像这样: how the grid layout group looks 我写了一个在TankPrefab中找到的拖放脚本:

public class DragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler {
    public static GameObject itemBeingDragged;
    Vector3 startPosition;
    public void OnBeginDrag(PointerEventData eventData)
    {
        itemBeingDragged = gameObject;
        startPosition = transform.position;
    }
    public void OnDrag(PointerEventData eventData)
    {
        transform.position = Input.mousePosition;   
    }
    public void OnEndDrag(PointerEventData eventData)
    {
        itemBeingDragged = null;
        transform.position = startPosition;
    }
}

当我将坦克拖到坦克插槽后找到的插槽上时,我遇到了问题。它把坦克拉到他身后: the problem 我在transform.SetAsLastSibling();中尝试OnBeginDrag,但它只是将其移动到父级(插槽)的第一个,我希望它高于其他插槽,所以我也尝试transform.parent.SetAsLastSibling();并且起初它看起来像是在工作但是在2次拖拽后坦克消失了

1 个答案:

答案 0 :(得分:1)

尝试添加" Canvas"组件到您的预制件并检查"覆盖排序"并设置排序顺序。我想我还必须添加一个图形raycaster。

检查员:

inspector