[NGUI]基於UIDragDropItem腳本實現簡單的控件拖拽

廢話不多說,直接上代碼:

using UnityEngine;
using System.Collections;

/// <summary>
/// 必須保證在NGUI創建的UIRoot下的子控件使用
/// </summary>
public class NewBehaviourScript : MonoBehaviour
{
	private UIRoot m_Root = null;
	private Collider m_Collider = null;

	void Awake()
	{
		m_Root = NGUITools.FindInParents<UIRoot>(gameObject);
		m_Collider = NGUITools.AddWidgetCollider(gameObject) as Collider;
	}
	#region OnDragStart, OnDrag和OnDragEnd是由UICamera觸發的函數事件,不能改變
	void OnDragStart()
	{
		if (!enabled) return;
		// 關閉碰撞是爲了在OnDragEnd檢測放開時觸摸的對象
		if (m_Collider != null) m_Collider.enabled = false;
	}
	void OnDrag(Vector2 delta)
	{
		// 改變位置實現移動
		if (m_Root)
			transform.localPosition += (Vector3)delta * m_Root.pixelSizeAdjustment;
	}
	void OnDragEnd()
	{
		DropRelease(UICamera.hoveredObject);

		if (m_Collider != null) m_Collider.enabled = true;
	}
	#endregion
	// 用於處理拖拽結束事件
	private void DropRelease(GameObject surface)
	{
		if (surface)
			transform.parent = surface.transform;
		transform.localPosition = new Vector3(0f,0f,0f);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章