我正在尝试创建一个3D点击以在Unity3D中移动游戏 .
我添加了一个UI Button
(使用 UnityEngine.UI
),我希望最终点击以打开和关闭运行 .
但是,单击 Button
实际上似乎是 clicking through 到场景中(在我的情况下 NavMeshAgent
导航)并导致我的播放器移动到其他位置 .
如何禁用光线投射以单击UI按钮或以某种方式让UI捕获自己的事件?
我一直在使用典型的Unity3D代码让用户进入游戏玩法等
if (Input.GetMouseButtonDown(0))
{
如果我尝试这种方法也一样
if( Input.touches.Length > 0 )
{
if ( Input.touches[0].phase == TouchPhase.Began )
{
在iOS,Android和桌面上似乎就是这种情况 .
这似乎是一个基本的问题,点击UI( UnityEngine.UI.Button
等)似乎落入游戏玩法 .
1 回答
关于这个非常古老的问题:
作为一个历史性的问题:这是一个粗略的准备好的快速修复,你在几年前的团结中......
实际上,几年来你不能再这样做了 .
撇开历史性的快速解决方案......
以下是您今天在Unity中的表现:
添加一个raycaster(只需点击一下),然后
这样做:
Basically ,再次 basically ,这就是它的全部 .
很简单:这就是你在Unity中处理触摸的方式 . 这里的所有都是它的 .
添加一个raycaster,并拥有该代码 .
它看起来很简单,而且很容易 . 但是,做得好可能很复杂 .
(脚注1 - 完整详情:Horrors of OnPointerDown versus OnBeginDrag in Unity3D)
(脚注2 - 由于历史原因:如果链接仍然有效,这里是关于如何在Unity中进行"new"触摸的原始着名视频,从那时起:link,第3部分 . )
Unity通过触摸技术的旅程非常吸引人:
“早期团结”......非常容易 . 完全没用 . 根本没用 .
“当前的'新'团结'......工作得很漂亮 . 非常简单,但难以以专业的方式使用 .
“即将来临的团结”......大约在2025年,他们将实际工作并且易于使用 . 不要屏住呼吸 .
(情况与Unity的 UI 系统没有什么不同 . 起初,UI系统是可笑的 . 现在,它很棒,但以专家的方式使用有些复杂 . )
方便的相关提示!
记得!当你有一个全屏隐形面板,其中包含一些按钮 . 在全屏隐形面板本身,你必须 turn off 光线投射!这很容易忘记: