1. 程式人生 > >Unity UGUI事件介面(EventSystems介面)

Unity UGUI事件介面(EventSystems介面)

事件介面的觸發條件

using UnityEngine.EventSystems;

        /// <summary>
        /// 指標點選事件
        /// *在元件可視的區域按下且擡起時指標處於區域內(按下離開區域後擡起不會觸發)
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnPointerClick(PointerEventData eventData) { }
        /// <summary>
        /// 指標按下事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnPointerDown(PointerEventData eventData) { }
        /// <summary>
        /// 指標進入事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnPointerEnter(PointerEventData eventData) { }
        /// <summary>
        /// 指標離開事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnPointerExit(PointerEventData eventData) { }
        /// <summary>
        /// 指標擡起事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnPointerUp(PointerEventData eventData) { }

        /// <summary>
        /// 初始化潛在的拖動事件
        /// *與IPointerDownHandler事件觸發條件大致相同
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnInitializePotentialDrag(PointerEventData eventData) { }
        /// <summary>
        /// 拖動開始事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnBeginDrag(PointerEventData eventData) { }
        /// <summary>
        /// 拖動中事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnDrag(PointerEventData eventData) { }
        /// <summary>
        /// 拖動結束事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnEndDrag(PointerEventData eventData) { }
        /// <summary>
        /// 接收拖動事件
        /// *接受實現IDragHandler介面的元件拖動到本元件上面鬆開時觸發
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnDrop(PointerEventData eventData) { }
        /// <summary>
        /// 滾動事件
        /// *滑輪在上面滾動時觸發
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnScroll(PointerEventData eventData) { }


        #region InputManager關聯組事件(同選擇組要求)
        /// <summary>
        /// 移動事件(上下左右)
        /// *與InputManager裡的Horizontal和Vertical按鍵相對應。Input.GetAxisRaw
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnMove(AxisEventData eventData) { }
        /// <summary>
        /// 取消事件
        ///  *按下InputManager裡的Cancel對應的按鍵(PC、Mac預設:Esc鍵)。Input.GetButtonDown
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnCancel(BaseEventData eventData) { }
        /// <summary>
        /// 提交事件
        /// *按下InputManager裡的Submit對應的按鍵(PC、Mac預設:Enter鍵)。Input.GetButtonDown
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnSubmit(BaseEventData eventData) { } 
        #endregion

        #region 選擇組事件  
        /*必須設定選擇物件後才能觸發
         * EventSystem.current.SetSelectedGameObject(gameobject)  
         */
        /// <summary>
        /// 選擇事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnSelect(BaseEventData eventData) { }
        /// <summary>
        /// 取消選擇事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnDeselect(BaseEventData eventData) { }
        /// <summary>
        /// 選中物體每幀觸發事件
        /// </summary>
        /// <param name="eventData"></param>
        public virtual void OnUpdateSelected(BaseEventData eventData) { } 
        #endregion