统一拖拽,拖到其他UI元素后面

Posted

技术标签:

【中文标题】统一拖拽,拖到其他UI元素后面【英文标题】:drag and drop in unity, drag behind other UI elements 【发布时间】:2017-07-30 23:32:45 【问题描述】:

我有一个带有Grid Layout Group 组件的面板。在里面我有一个名为 slot 的面板,上面有一个背景图像,在里面我有一个包含 2 个图像的预制件。它看起来像这样: 我写了一个拖放脚本,在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;
    

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

【问题讨论】:

【参考方案1】:

尝试将“画布”组件添加到您的预制件中并选中“覆盖排序”并设置排序顺序。我想我还必须添加一个图形光线投射器。

检查员:

【讨论】:

以上是关于统一拖拽,拖到其他UI元素后面的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在其他 UI 元素后面显示 Popover?

使用 jQuery UI 将一个元素拖到另一个元素上时交换元素

角度拖拽拖拽重复元素

移动端拖拽(模块化开发,触摸事件,webpack)

如何使用jQuery Draggable和Droppable实现拖拽功能

将图像拖到透明 png 后面