以下是您今天在 Unity 中的操作方式:
自然地,您将EventSystem
在层次结构中拥有一个 - 只需检查您是否这样做。(例如,当您添加一个 Canvas 时,您会自动获得其中一个;通常,Unity 项目中的每个场景都已经有一个EventSystem
,但只需检查您是否有一个。)
将物理光线投射器添加到相机(只需单击一下)
做这个:
.
using UnityEngine.EventSystems;
public class Gameplay:MonoBehaviour, IPointerDownHandler {
public void OnPointerDown(PointerEventData eventData) {
Bingo();
}
}
基本上,基本上,这就是它的全部内容。
很简单:这就是您在 Unity 中处理触摸的方式。这里的所有都是它的。
添加一个光线投射器,并拥有该代码。
它看起来很容易,也很容易。但是,要做好可能会很复杂。
(脚注:在 Unity 中进行拖动的一些恐怖:在 Unity3D 中 OnPointerDown 与 OnBeginDrag 的恐怖)
Unity 的触控技术之旅令人着迷:
“早期统一”……非常容易。完全没用。根本没有工作。
“当前的‘新’Unity”……效果很好。非常容易,但很难以专业的方式使用。
“即将到来的未来 Unity”......在 2025 年左右,他们将使它既能实际工作又易于使用。不要屏住呼吸。
(情况和 Unity 的UI系统没什么不同。起初 UI 系统很可笑。现在,它很棒,但以专家的方式使用有点复杂。截至 2019 年,他们将再次彻底改变它。)
(网络是一样的。起初它完全是垃圾。“新”网络非常好,但有一些非常糟糕的选择。就在最近 2019 年,他们再次改变了网络。)
方便的相关提示!
记住!当您有一个包含一些按钮的全屏隐形面板时。在全屏隐形面板本身上,您必须关闭光线投射!很容易忘记:
作为一个历史问题:这里是“忽略 UI”的粗略快速修复,您多年前可以在 Unity中使用它......
if (Input.GetMouseButtonDown(0)) { // doesn't really work...
if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
return;
Bingo();
}
几年来,你不能再这样做了。