gpt4 book ai didi

c# - 如何让游戏玩法忽略 Unity3D 中 UI 按钮的点击?

转载 作者:太空狗 更新时间:2023-10-29 17:33:57 26 4
gpt4 key购买 nike

我有一个 UI Button(使用 UnityEngine.UI)。

但是,点击 Button 似乎是点击到场景中(在我的例子中点击导航网格)。

如何解决这个问题?

我一直在使用典型的 Unity3D 代码让用户进入游戏,例如

if (Input.GetMouseButtonDown(0))
{

如果我尝试这种方法也是一样

if( Input.touches.Length > 0 )
{

if ( Input.touches[0].phase == TouchPhase.Began )
{

在 iOS、Android 和桌面上似乎都是这种情况。

这似乎是一个基本问题,即点击 UI(UnityEngine.UI.Button 等)似乎会影响游戏玩法。

最佳答案

以下是您目前在 Unity 中的操作方式:

  1. 您自然会在层次结构中有一个 EventSystem - 只需检查您是否有。 (例如,当您添加一个 Canvas 时,您会自动获得其中一个;通常,Unity 项目中的每个场景都有一个 EventSystem,但只需检查您是否有一个。)

  2. 向相机添加一个物理光线转换器(只需单击一下)

  3. 这样做:

.

  using UnityEngine.EventSystems;
public class Gameplay:MonoBehaviour, IPointerDownHandler {
public void OnPointerDown(PointerEventData eventData) {
Bingo();
}
}

基本上,再次基本上,仅此而已。

非常简单:这就是您在 Unity 中处理触摸的方式。仅此而已。

添加一个光线转换器,并获得该代码。

看起来很简单,其实很容易。然而,要做好可能很复杂。


(脚注:在 Unity 中进行拖动的一些恐怖行为:Horrors of OnPointerDown versus OnBeginDrag in Unity3D)


Unity 的触控技术之旅令人着迷:

  1. “早期团结”......非常容易。毫无用处。根本没用。

  2. “当前的‘新’Unity”……效果很好。非常简单,但很难以专家的方式使用。

  3. “即将到来的 future Unity”……到 2025 年左右,他们将使其既实用又易于使用。不要屏住呼吸。

(这种情况与 Unity 的 UI 系统没什么不同。起初 UI 系统很可笑。现在,它很棒,但以专家的方式使用起来有点复杂。截至 2019 年,它们是即将再次彻底改变它。)

(网络是一样的。起初它完全是垃圾。"new"网络非常好,但有一些非常糟糕的选择。就在最近 2019 年,他们再次更改了网络。)


实用的相关提示!

记住!当您有一个包含一些按钮的全屏不可见 面板时。在全屏隐形面板上,您必须关闭 光线转换!很容易忘记:

enter image description here


作为一个历史事件:这是“忽略 UI”的粗略快速修复方法,多年前您曾经能够在 Unity 中使用...

if (Input.GetMouseButtonDown(0)) { // doesn't really work...
if (UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
return;
Bingo();
}

你不能再这样做了,几年了。

关于c# - 如何让游戏玩法忽略 Unity3D 中 UI 按钮的点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com