Unity 3d启用鼠标指针作为事件触发器的指针进入/退出[重复]

Posted

技术标签:

【中文标题】Unity 3d启用鼠标指针作为事件触发器的指针进入/退出[重复]【英文标题】:Unity 3d enabling mouse pointer as a Event Trigger's pointer enter /exit [duplicate] 【发布时间】:2016-05-26 05:41:19 【问题描述】:

我有一个非常基本的问题,即启用鼠标光标作为指针。我试图通过一个简单的代码编写指针进入事件,指针进入退出事件工作。但是当我使用事件触发器的 PointerEnter 或 PointerExit 事件时,不会触发这些操作。 我是否必须启用某些东西才能将鼠标作为 Unity 3d 指针激活?

【问题讨论】:

【参考方案1】:

PointerEnterPointerExit 用于 Unity UI:

    在顶部包含using UnityEngine.EventSystems;

    实现PointerEnterPointerExit接口。

    将脚本附加到 UI 的画布上。

PointerEnterPointerExit 用于 3D 对象/模型:

    在顶部包含using UnityEngine.EventSystems;

    实现PointerEnterPointerExit接口。

    将脚本附加到 3D 对象并确保 2D Collider 附加到该 3D 对象/模型。

    选择Camera 并将Physics Raycaster 附加到相机。

PointerEnterPointerExit 用于 2D 对象/Sprite:

    在顶部包含using UnityEngine.EventSystems;

    实现PointerEnterPointerExit接口。

    将脚本附加到 2D 对象并确保 2D Collider 附加到该 2D 对象/Sprite。

    选择Camera 并将Physics 2D Raycaster 附加到相机。

所有这些场景的代码都是相同的。

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

public class ClickTester : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler

    public void OnPointerEnter(PointerEventData eventData)
    
        Debug.Log("Pointer Enter");
    

    public void OnPointerExit(PointerEventData eventData)
    
        Debug.Log("Pointer Exit");
    

【讨论】:

我用 3d 对象和 2d 对撞机进行了测试,但它不起作用。但是带有 3d 对撞机的 3d 对象……它确实有效。非常感谢 @user6160538 我可以告诉你这是最简单的解决方案。创建一个名为 ClickTester 的脚本。复制我对脚本的回答中的代码,然后将其附加到 Sprite,因为这是一个 2D 对象。将Physics 2D Raycaster 附加到相机。单击播放并在 GameView 中间单击一次,然后您现在可以将鼠标移到 Sprite 上,它应该可以工作。如果这不起作用,那么您的项目不是 2D 而是 3D。创建一个新项目,这次选择 2D。 哇,这是我看到的第一件事,它解释了你实际上必须做什么。到目前为止,我发现理解事件系统非常困难,但是通过这篇文章,这一切都说得通。太感谢了! :D

以上是关于Unity 3d启用鼠标指针作为事件触发器的指针进入/退出[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥unity3d进去之后没有鼠标?

WPF嵌入Unity3D之后,unity3D程序的键盘和鼠标事件无法触发(3D程序的焦点无法激活)的解决方案

mouseovermouseout,mouseentermouseleave区别

几个mouse事件的特点

jq:mouseover和mouseout多次触发解决办法

jquery 一些事件