我有一个2D场景,应该显示可用的纸板场景列表(如缩略图) . 用户点击缩略图后,我试图将他发送到选定的纸板场景 . 但是,我无法捕捉第一个(列表)场景中的触摸事件 . 点击后,没有任何反应,简单地说 . (编辑:我会补充说我只在Android上测试过这个)
这就是我测试的内容:
我创建了一个新项目(Unity 5.0.2f) - 2D我将UI按钮和文本字段添加到场景中我添加了一个在单击按钮后触发的脚本 - 它只是将文本字段的文本更改为“Clicked” - - >>>所有工作都很精细,点击触摸屏上的按钮按预期工作,文字改变<<< ---我导入谷歌的Carboard SDK --- >>>没有触摸事件工作!点击处理程序永远不会触发<<< ---我删除Google的Cardboard SDK --- >>> TAPS WORK AGAIN <<< ---
触发的点击脚本很简单:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class TestScript : MonoBehaviour {
public Text text;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void ButtonClicked() {
text.text = "Clicked!";
// Application.LoadLevel ("DemoScene");
}
}
因此,基本上导入Cardboard SDK完全打破了Unity 5中的触摸事件 . 如果我直接以统一方式测试它,鼠标事件就可以正常工作 . 即使导入Cardboard SDK,文本也会更改 . 有人有点想法吗?我做错了什么或者这是一个Unity错误?
4 回答
另一种方法,假设你想要保持TapIsTrigger /想要在VR模式下拥有这个2D场景是使用:
同样,您需要勾选TapIsTrigger以使其正常工作 .
在Cardboard.SDK设置中关闭“Tap Is Trigger” . 请注意,新的v0.5版本不再存在此问题 .
在我的情况下,只有当您从纸板场景切换到非纸板场景时,才会发生这种双指多触摸检测问题 .
我的解决方案是:当您想要将场景从Cardboard场景加载到非Cardboard场景时,在执行LoadLevel()之前,禁用 CarboardMain 游戏对象中的 VR Mode Enabled ,在 Cardboard.cs 脚本下,然后执行LoadLevel() .
ps:当您在loadLevel()之前关闭 VR Mode Enabled 时,在完全跳转到LoadLevel()新场景之前,您将体验到Cardboard相机在一秒内(可见但立即)从VR模式更改为非VR模式 . 这很难看 .
AND my solution is,
You can overcome this by disable the camera first, then only you turn off the VR Mode Enabled in CardboardMain game object, so the scenes-switching flow will be appeared smooth.
请尝试以下步骤:
删除MainCamera
将CarboardMain拖入场景
从Prefabs / UI将CardboardReticle置于主摄像头下
将物理射线放大器添加到主摄像机组件
添加事件系统GameObject
将GazeInputModule脚本添加到事件系统
将触摸输入模块添加到事件系统