最近学了点Unity的知识,今天给大家介绍一个使用的UI排序展示框。
首先是要拖动的物体上的脚本DragItem;
public class DragItem : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler
{
public Text m_Text; // 按钮文字内容
private float topPadding; // 上边定距
private float spacing; // 空隙距离
private float height; // 按钮高度
private int sibling; // 顺序
private DragContent parentDragDropContent; // 对列表的引用
/// <summary>
/// 刚开始拖动
/// </summary>
/// <param name="eventData"></param>
public void OnBeginDrag(PointerEventData eventData)
{
transform.SetAsLastSibling(); // 拖动的按钮再最前面展示
GetComponent<LayoutElement>().ignoreLayout = true; // 这里为了避免空物体跳动,而暂时先让被拖动的物体取消排序的约束
}
/// <summary>
/// 拖动的时候,要计算被拖动的物体的大小位置从而选择出适合其放置顺序
/// </summary>
/// <param name="eventData"></param>
public void OnDrag(PointerEventData eventData)
{
transform.position = new Vector3(transform.position.x, eventData.position.y, transform.position.z); // 这里只按照Y轴方向拖动
sibling = -(int)((transform.localPosition.