【问题标题】:Unity AR How can i trigger a button in the scene?Unity AR 如何触发场景中的按钮?
【发布时间】:2018-11-28 10:48:03
【问题描述】:

我有这个适用于 Android 的小型 AR-Unityapp,我尝试使用按钮播放视频。但是按钮不应该在屏幕上(画布)它应该在场景中(可以理解吗?)。所以我制作了一个 3d 平面,它只是用指针向下事件开始视频,但它不起作用。我知道它可以做到这一点,但我不知道一些帮助会有什么帮助(xP)。

【问题讨论】:

  • 你为什么不用virtual buttons
  • 我已经有一些虚拟按钮可以用于其他一些东西

标签: unity3d button augmented-reality vuforia


【解决方案1】:

使用世界画布:

创建一个画布并将其“渲染模式”设置为“世界”。 在该画布中,您可以放置​​按钮,为它提供 3D 位置,就像在飞机上一样,但您可以使用普通的 UI 功能,例如按钮,而不是自己实现点击检测。

【讨论】:

  • 或者做一个 IPointerClickHandler 行为并添加一个物理射线投射器。
【解决方案2】:

如果您想触发 Pointer Down 事件,只需按照以下步骤操作即可

步骤

  1. 将 Physics Raycaster 添加到您的相机,如下所示
  2. 在场景中添加 EventSystem 对象
    右键单击 Hirarchy 窗口 -> UI -> 事件系统
  3. 攻击事件触发器组件到所需平面
    选择Plane -> Add Component -> Event Trigger -> Add Event of Pointer Down
  4. 现在通过 PointerDown 事件调用所需的方法(在我的例子中是 Plane.OnSelected())

事件触发的替代方案

  1. 步骤 1 到 2 同上
  2. 将以下脚本附加到该平面,如下所示

    using UnityEngine;
    using UnityEngine.EventSystems;
    
    public class Plane : MonoBehaviour,IPointerDownHandler {
        public void OnPointerDown(PointerEventData eventData)
        {
            Debug.Log("CALLED");
        }
    }
    

    此方法将在所需平面上的 Pointer Down 上调用。 如上面代码所示,我们使用的是UnityEngine.EventSystemsIPointerDownHandler接口

我相信这会解决您的问题。

【讨论】:

  • 谢谢,如果我不想使用画布方法,这个答案非常有用:)
  • 我很高兴能够提供帮助。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2022-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多