天天看點

Unity基礎:事件系統之Unity所有事件和輸入的API(Events)(待補充)

包括,Collider,Trigger,EventSystem,EventTrigger,Input等

PS:1、3D物體上需要添加Collider才能觸發事件,

2、EventSystem,EventTrigger繼承自Events

1、Collider:

  • MonoBehaviour.OnCollisionEnter(Collision collision) 當進入碰撞器
  • MonoBehaviour.OnCollisionExit(Collision collision) 當退出碰撞器
  • MonoBehaviour.OnCollisionStay(Collision collision)  當逗留碰撞器

2、Trigger:

  • MonoBehaviour.OnTriggerEnter(Collider collider)當進入觸發器
  • MonoBehaviour.OnTriggerExit(Collider collider)當退出觸發器
  • MonoBehaviour.OnTriggerStay(Collider collider)當逗留觸發器

3、Mouse:(Colliders)

  • OnMouseDown:當滑鼠上的按鈕被按下時觸發的事件;
  • OnMouseUp:當滑鼠按鍵被松開時觸發的事件
  • OnMouseDrag:當使用者滑鼠拖拽GUI元素或碰撞體時調用;
  • OnMouseEnter:當滑鼠進入物體範圍時被調用,進入時調用一次;
  • OnMouseExit:當滑鼠退出時被調用;
  • OnMouseOver:當滑鼠移動到某對象的上方時觸發的事件,持續調用;

4、EventSystem:(UI):

PS:隻要腳本挂載的物體或者其子物體(孫物體等)有可以檢測到射線的元件,就可以觸發事件;比如将腳本挂載到Canvas上,如果Canvas下沒有能進行射線檢測的元件(比如Image等元件),則不觸發UI事件;而如果Canvas下有子物體有能檢測射線的元件,則可以觸發事件。例:在Canvas下有兩個Image子物體,Canvas上挂載了UI事件腳本(調用了IpointerEnterHandler等),則當滑鼠進入到兩個Image子物體中時可以調用事件,當滑鼠移出Image子物體,進入空白區域時,則不觸發事件。

  • IPointerEnterHandler - OnPointerEnter - 當滑鼠進入
  • IPointerExitHandler - OnPointerExit - 當滑鼠離開
  • IPointerDownHandler - OnPointerDown -  當滑鼠按下(OnPointerDown和OnPointerUp需要成對出現)
  • IPointerUpHandler - OnPointerUp -  當滑鼠擡起(OnPointerDown和OnPointerUp需要成對出現)
  • IPointerClickHandler - OnPointerClick -   當滑鼠按下并擡起
  • IInitializePotentialDragHandler - OnInitializePotentialDrag - 
  • IBeginDragHandler - OnBeginDrag - 當開始拖拽
  • IDragHandler - OnDrag - 當拖拽中
  • IEndDragHandler - OnEndDrag - 當結束拖拽
  • IDropHandler - OnDrop - 當放下(在A物體上調用OnDrag,在B物體上調用OnDrop,并保證B物體的渲染優先級比A物體高,即在Hierachy視圖中,指定區域對應的物體一定要在被拖動物體的下面)
  • IScrollHandler - OnScroll -  當滾動,常用于ScrollView等元件(Image也可以使用,滑鼠在Image上并滾動滑鼠滾輪時調用)
  • IUpdateSelectedHandler - OnUpdateSelected-當每個選擇對象
  • ISelectHandler - OnSelect - 當對象變為標明
  • IDeselectHandler - OnDeselect - 當對象取消標明
  • IMoveHandler - OnMove - 當移動時
  • ISubmitHandler - OnSubmit - 當送出按鈕被按下
  • ICancelHandler - OnCancel - 當取消按鈕被按下

(待補充)

4、滑鼠滾輪的使用

  • Input>getAxis(" Mouse ScrollWheel")
if (Input.GetAxis("Mouse ScrollWheel") > 0)
    {
        if (_camera.fieldOfView >= 10)
        {
							
        }
    }
           

繼續閱讀