Unity 滑鼠 ( 鼠標, Mouse ) 監聽事件 ( Event) 的三種方法

前言:

我看網路其他文章都只有展示其中一種方法,而且每種方法都很零散,所以我今天要集大成,造福群眾。好了,廢話不多說,下面為大家展示 Unity 滑鼠 ( 鼠標, Mouse ) 進入物件時的三種監聽方法,每種各有優缺點,請自行參考與使用。

當然簡單的滑鼠進入監聽肯定滿足不了你,你可能還需要監聽 點擊 (Click), 拖拉 ( Drag ), 離開 ( Exit )… 等等高級操作,所以我下面提供 API 網址給大家,讓你們創造更多美好的事物。

API : https://docs.unity3d.com/ScriptReference/EventSystems.EventTrigger.html

方法一:

這是用繼承的方式,只能對掛載的 Game Object 有效果

using UnityEngine;
using UnityEngine.EventSystems;

public class NewBehaviourScript : MonoBehaviour, IPointerEnterHandler
{
    public void OnPointerEnter (PointerEventData p)
    {
        Debug.Log ("Enter Position : " + p.position);
    }
}

方法二:

該好處是可以遠程操控其他 Game Object ,使用起來比 ” 方法一 ” 更加靈活。

需要先在外部加入 Event Trigger 元件,如下圖:

这里写图片描述

using UnityEngine;
using UnityEngine.EventSystems;

public class NewBehaviourScript : MonoBehaviour {

    public void OnMouseEnter(BaseEventData data)
    {
        PointerEventData p = data as PointerEventData;
        Debug.Log("Enter Position : " + p.position);
    }
}

方法三:

與 ” 方法二 ” 功能相同,不需要從外部加入 Event Trigger 元件,而且可以控制更多細節,程式碼當然也比較多。

using UnityEngine;
using UnityEngine.EventSystems;

public class NewBehaviourScript : MonoBehaviour
{
    public GameObject target;

    void Start ()
    {
        EventTrigger trigger = target.gameObject.AddComponent<EventTrigger> ();
        EventTrigger.Entry entry = new EventTrigger.Entry ();
        entry.eventID = EventTriggerType.PointerEnter;
        entry.callback.AddListener ((data) => {
            OnPointerEnter ((PointerEventData)data);
        });
        trigger.triggers.Add (entry);
    }

    public void OnPointerEnter (PointerEventData p)
    {
        Debug.Log ("Enter Position : " + p.position);
    }
}

執行結果:

當然啦,三種方法結果都相同,只要你的滑鼠進入物件範圍內,就會類似打印下面這種結果:

这里写图片描述

寫在最後:

祝你們玩得開心,如果你們賺錢了記得分我一點。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值