UI的拖拽操作,也是常见的功能。
导出资源
代码实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;
/*
* Author:W
* 拖拽操作
*/
public class DragAndDropTest : MonoBehaviour {
private GComponent root;
private GButton btnA;
private GButton btnB;
private GButton btnC;
private GButton btnD;
void Awake()
{
UIPackage.AddPackage("UI/Basics");
}
// Use this for initialization
void Start () {
root = this.GetComponent<UIPanel>().ui;
//1.自由拖拽
btnA = root.GetChild("a").asButton;
btnA.draggable = true;
//2.拖动赋值
btnB = root.GetChild("b").asButton;
btnB.draggable = true;
btnB.onDragStart.Add((EventContext context) => {
//取消之前的拖拽,开始一个新的
context.PreventDefault();
DragDropManager.inst.StartDrag(btnB, btnB.icon, btnB.icon, (int)context.data);
});
btnC = root.GetChild("c").asButton;
btnC.icon = null;
btnC.onDrop.Add((EventContext context) => {
btnC.icon = (string)context.data;
});
//3.限制边界的拖动
GObject bounds = root.GetChild("n7");
Rect rect = bounds.TransformRect(new Rect(0, 0, bounds.width, bounds.height), root);
btnD = root.GetChild("d").asButton;
btnD.draggable = true;
btnD.dragBounds = rect;
}
// Update is called once per frame
void Update () {
}
}
运行结果如下