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

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

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    PointerEnterPointerExit 用于 Unity UI:

    1. 在顶部包含using UnityEngine.EventSystems;

    2. 实现PointerEnterPointerExit接口。

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

    PointerEnterPointerExit 用于 3D 对象/模型:

    1. 在顶部包含using UnityEngine.EventSystems;

    2. 实现PointerEnterPointerExit接口。

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

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

    PointerEnterPointerExit 用于 2D 对象/Sprite:

    1. 在顶部包含using UnityEngine.EventSystems;

    2. 实现PointerEnterPointerExit接口。

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

    4. 选择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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2020-09-14
    • 2010-10-27
    相关资源
    最近更新 更多