【问题标题】:UI Button's EventTrigger doesn't respond to OnPointerDown nor OnPointerUpUI Button 的 EventTrigger 不响应 OnPointerDown 和 OnPointerUp
【发布时间】:2021-05-02 21:46:47
【问题描述】:

我一直在尝试制作一个按钮,该按钮在被按下时执行操作,而在释放时执行另一个操作。我发现人们通常使用 EventTriggers 来做那种事情,但是按钮不响应被按下或释放,尽管层次结构中有一个 EventSystem。这是 Inspector 上按钮的事件触发器(称为 MoveUp)。:

还有画布检查员。将 Blocking Mask 更改为 Everything 并不会改变任何内容。

还有 MainCamera Inspector。添加了 Graphics Raycaster,因为我读到它是必需的。

还有事件系统的检查员,即使我什么都没做:

这是画布层次结构。

还有一个按钮脚本的sn-p:

有人知道为什么会这样吗?希望我已经透露了足够的细节。提前致谢!

【问题讨论】:

  • 尝试使用 IPointerDownHandler 而不是 IPointerClickHandler
  • 我试过了(还添加了 IPointerUpHandler),但是没有用...
  • 它有图像组件或任何可点击的东西吗?在检查器中,检查它是否显示 Transform 或 RectTransform。我曾经犯过将普通(非ui)对象放在Canvas下的错误,并想知道为什么UI不起作用。

标签: unity3d user-interface button eventtrigger


【解决方案1】:

您的设置存在一些问题。

Graphics Raycaster 应该将 Blocking Mask 设置为 Everything(默认)。

您可以移除 Physics 2D Raycaster。 Graphics Rayctaser 是您用于 UI 光线投射的工具。

您可以从 ButtonCode 单声道行为中删除 IPointerClick 处理程序。 Event Trigger 组件实现了所有需要的接口,并调用了 ButtonCode 组件中的方法。

如果你遵循这个,你应该能够与你的按钮进行交互。

【讨论】:

    【解决方案2】:

    我终于找到问题了!受米兰回答的启发,我尝试检查按钮是否可点击,但我发现不是。所以我做了一些研究,发现你可以在玩的时候在 Inspector 中查看 EventSystem 的底部,以找出你在 UI 上单击的位置。原来我有一个文本,它的矩形变换太大了,它在按钮上!感谢 MarkSouls 和 Milan Egon Votrubec 回答了这个问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多