EventSystem的事件触发和pointer类执行顺序

上一篇写了Event Trigger的触发事件方法。这篇写EventSystem的触发事件方法。这两个方法都可以用来触发3D和2D事件。而且场景中都必须存在EventSystem这个GameObject。


下面图片就是EventSystem的事件里的方法。而Event Trigger里没有下图中的input输入类。其他都一样。

EventSystem的事件触发和pointer类执行顺序_第1张图片


下面讲EventSystems的触发事件方法

具体步骤如下(方法非常简单,只要将下列代码绑定到物体上就可以触发事件了):


1)首先把代码写上(如下):

注意:脚本TT必须继承这些类(如IPointerEnterHandler, IPointerExitHandler等等)。代码的log中已经说明了每个方法的意思。

using UnityEngine;
using UnityEngine.EventSystems;
public class TT : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler, IPointerUpHandler, IPointerDownHandler
{

    // Use this for initialization
    void Start()
    {
       
    }

    // Update is called once per frame
    void Update()
    {

    }
   

    public void OnPointerEnter(PointerEventData eventdata)
    {
        Debug.Log("4enter进入");
    }

    public void OnPointerExit(PointerEventData eventdata)
    {
        Debug.Log("5exit离开");
    }
    public void OnPointerClick(PointerEventData eventdata)
    {
        Debug.Log("6click点击");
    }

    public void OnPointerDown(PointerEventData eventdata)
    {
        Debug.Log("8down按下");
    }

    public void OnPointerUp(PointerEventData eventdata)
    {
        Debug.Log("7up抬起");
    }
}



2)将TT方法绑定到一个图片(图中图片为绿色)就可以执行方法了;

测试步骤是鼠标从外面进入图片、然后点击图片、之后离开图片区域。从log可以看出这些方法的执行顺序。

注意:点击事件在抬起事件之后执行

EventSystem的事件触发和pointer类执行顺序_第2张图片


3)测试3D物体的方法与2D图片完全一样,把TT脚本绑定给cube,然后给相机加上physics raycaster这个组件就OK。

测试方法也同上,效果如下图:

EventSystem的事件触发和pointer类执行顺序_第3张图片


你可能感兴趣的:(UGUI)