以下是在Unity中的操作步骤:
自然而然,您的层次结构中将会有一个 EventSystem
- 确保您已经有了它。(例如,在添加Canvas时,您会自动获得一个;通常,Unity项目中每个场景都已经有一个 EventSystem
,但请确保您已经拥有一个。)
在相机上添加一个物理射线投射器(只需一次点击)
执行以下操作:
.
using UnityEngine.EventSystems;
public class Gameplay:MonoBehaviour, IPointerDownHandler {
public void OnPointerDown(PointerEventData eventData) {
Bingo();
}
}
基本上,再说一遍,那就是全部内容了。
简单来说:这就是你在Unity中处理触摸的方式。就是这样。
添加一个射线投射器,并加入那段代码。
看起来很容易,而且确实很容易。然而,要做好却可能有些复杂。
(Footnote: 在Unity中执行拖动操作时可能会遇到一些问题:
Unity3D中OnPointerDown与OnBeginDrag的问题)
Unity在触摸技术方面的旅程非常引人入胜:
- “早期Unity”……极其简单。毫无用处。根本无法使用。
- “当前‘新’Unity”……运行得很好。非常容易,但在专家级别上使用起来很困难。
- “即将到来的Unity”……到2025年左右,他们将使其同时具备实际功能和易用性。不要抱太高期望。
(情况与Unity的UI系统类似。起初,UI系统令人发笑。现在,它很棒,但在专家级别上使用起来有些复杂。截至2019年,他们将再次对其进行全面更改。)
(网络也是一样。起初它是垃圾。 “新”的网络相当不错,但有一些非常糟糕的选择。最近在2019年,他们又再次更改了网络。)
一个有用的相关提示!
记住!当您有一个全屏的不可见面板,其中包含一些按钮。在全屏不可见面板本身上,您必须关闭射线投射!很容易忘记:
作为一个历史问题:以下是在几年前的Unity中,您曾经可以使用的“忽略UI”的粗略且快速的解决方案...
if (Input.GetMouseButtonDown(0)) {
if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
return;
Bingo();
}
你不能再做这件事了,已经有几年了。