【问题标题】:Unity Button not working/highlighting/interactingUnity 按钮不起作用/突出显示/交互
【发布时间】:2018-07-22 14:26:39
【问题描述】:

我已经制作了程序,一旦关卡完成,就会弹出一个面板并附加此按钮。但是这个按钮不起作用。

我已经 - 检查了我的事件系统,检查了 Raycast 设置,设置了 onclick 事件,还在 z 轴上拉出了按钮,这样它就不会受到面板的干扰。

我的层次结构

按钮的检查器

画布检查员

【问题讨论】:

  • 在画布上元素出现的顺序很重要。确保按钮下方(在层次结构中)没有面板或全屏大小的图像,实际上,静态的所有内容都应该在顶部,而可交互的所有内容都应该在底部。

标签: c# unity3d button


【解决方案1】:

这是因为Image 的原始颜色是完全黑色的。 Button 组件只是尝试为原始颜色着色,但因为它是黑色的,所以您看不到任何效果。

哦,还有...正如@Glurth 所说,您已经在CanvasGroup 上启用了Block Raycast,所以基本上Button 甚至不会接收指针事件。

【讨论】:

  • 我更改了按钮的颜色并将被阻止的光线投射更改为关闭,但仍然没有变化。
  • 您的层次结构中有EventSystem 组件吗?它负责向 UI 元素分派事件
  • 是的,它在层次结构中,就像您在图片中看到的那样。还是不行
  • 哦,没看过。愚蠢的我...EventSystem 如果它在场景中,它是否有效。一旦按钮开始获取事件,您就会看到它。另一种猜测,尝试将Graphic Raycaster 组件上的Blocking objectsBlocking mask 更改为Everything。等我回家后,我必须检查一下这种情况。顺便说一句,你在Canvas Group 上禁用了Block Raycast,对吧?
  • 我将阻塞掩码和阻塞对象更改为一切,但仍然没有得到任何东西,而且我确实禁用了块射线投射
【解决方案2】:

我看到您为 Canvas 组配置了“Blocks Raycasts”,您已将其添加到画布本身。

我认为这个组件无论如何都不应该出现在画布上;它旨在允许人们禁用或隐藏画布上的对象组。 “阻止光线投射”旨在防止单击该组后面的控件,并为该组本身收集点击次数。如果您将所有内容放在该组中的画布上,它将收集所有内容的所有点击次数。

【讨论】:

  • 我已经尝试禁用 Blocks Raycasts 并且还更改了对象的顺序,以便难以处理的对象位于底部,但仍然没有功能。
【解决方案3】:

我发现了我的问题,我没有选中“忽略父组”,这不允许鼠标指针识别按钮,因为它是画布的“子”

谢谢大家的帮助!

My Canvas Inspector component, Canvas Group

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多