---------------------------------- 独立游戏《奶茶拯救宇宙》开发第N天-------------------------------------------
两种鼠标悬停事件的方法
1.单个button的话可以用这个方法
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ButtonHover : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
// 当鼠标悬停时调用
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("Mouse entered button");
// 在这里添加你想要执行的代码
}
// 当鼠标离开时调用
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("Mouse exited button");
// 在这里添加你想要执行的代码
}
}
2.批量给button加事件的方法:
建立button数组,用for循环通过index逐个绑定事件。
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class YourClassName : MonoBehaviour
{
// ... (其他代码)
public void AssignButtonEvent(int buttonIndex)
{
// ... (其他代码)
UnityEngine.UI.Button button = buttons[buttonIndex];
// 添加或获取EventTrigger组件
EventTrigger eventTrigger = button.gameObject.GetComponent<EventTrigger>();
if (eventTrigger == null)
{
eventTrigger = button.gameObject.AddComponent<EventTrigger>();
}
// 添加鼠标悬停事件
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerEnter;
entry.callback.AddListener((data) => { OnPointerEnterDelegate((PointerEventData)data); });
eventTrigger.triggers.Add(entry);
// 添加鼠标离开事件
entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerExit;
entry.callback.AddListener((data) => { OnPointerExitDelegate((PointerEventData)data); });
eventTrigger.triggers.Add(entry);
// ... (其他代码)
}
// 鼠标悬停时的处理
private void OnPointerEnterDelegate(PointerEventData eventData)
{
Debug.Log("Mouse entered button");
// 在这里添加你想要执行的代码,例如显示提示等
}
// 鼠标离开时的处理
private void OnPointerExitDelegate(PointerEventData eventData)
{
Debug.Log("Mouse exited button");
// 在这里添加你想要执行的代码
}
}