当我们在Unity场景中创建一个UI,比如Image,Unity会自动帮我们创建一个EventSystem(有且仅有一个)和Canvas。EventSystem中有EventSystem组件,用于处理事件,包括Graphic,2D,3D,还有StandAloneInputModule,用于管理输入。Canvas中有GraphicRayCaster组件,用于响应射线检测,如果想要2D或3D物体产生交互事件,类似的要添加Box Collider2D或Box Collider。
具备以上条件后,还需要对事件添加响应,主要有两种方法:
1. 在Inspector中添加Eventtrigger组件,然后绑定函数(通过脚本添加是一样的逻辑),下面演示脚本方式添加事件相应:
void Start()
{
EventTrigger.Entry MyClick = new EventTrigger.Entry();
MyClick.eventID = EventTriggerType.PointerClick;
MyClick.callback.AddListener(OnClick);
EventTrigger eventTrigger = gameObject.AddComponent<EventTrigger>();
eventTrigger.triggers.Add(MyClick);
}
void OnClick(BaseEventData data)
{
GetComponent<Image>().color = Color.green;
}
<