1.Canvas 中 Render Mode 为 WorldSpace模式时的事件相机没有设置 (这是把事件相机拖拽放在 Event Camera 中即可)
2.关于鼠标悬浮事件 直接上代码:
这里的triggerArea可以时Button或Image等
if (triggerArea.GetComponent<EventTrigger>() == null)
triggerArea.gameObject.AddComponent<EventTrigger>();
triggerArea.GetComponent<EventTrigger>().triggers = new List<EventTrigger.Entry>();
// 添加到委托列表
triggerArea.GetComponent<EventTrigger>().triggers.Add(CommonBind(EventTriggerType.PointerEnter, OnHover));
triggerArea.GetComponent<EventTrigger>().triggers.Add(CommonBind(EventTriggerType.PointerExit, OnUnHover));
tipPanel.SetActive(false);
EventTrigger.Entry CommonBind(EventTriggerType type, UnityAction<BaseEventData> call)
{
// 注册事件
EventTrigger.Entry enter = new EventTrigger.Entry();
// 实例化eventID
enter.eventID = type;
// 实例化callback
enter.callback = new EventTrigger.TriggerEvent();
// 设置事件
UnityAction<BaseEventData> pointerEnterCB = new UnityAction<BaseEventData>(call);
// 绑定事件
enter.callback.AddListener(pointerEnterCB);
return enter;
}
void OnHover(BaseEventData eventData)
{
Debug.Log("悬浮在UI上");
tipPanel.SetActive(true);
}
void OnUnHover(BaseEventData eventData)
{
Debug.Log("Unhover me");
tipPanel.SetActive(false);
}