Unity 使用Canvas Group时,出现子按钮无法点击的现象

button无法点击主要有几种
1、button自己的原因
button使用的image需要勾选Raycast Target
请添加图片描述

2、有可能被其他UI组件挡住
可以检查一下是否位于最上层

3、在使用Canvas Group同一管理UI组件时出现的无法选中现象

在这里插入图片描述

  • Alpha可以控制整个Canvas中UI组件的透明度,通过对Alpha值的调整可以实现整个UI的消失和出现
  • Interactable:可交互,只有选中时Canvas内部UI才可以正常交互,否则就会是不可使用的状态
  • Blocks Raycasts:射线检测,同样只有选中是才能够检测到鼠标的点击事件

在做UI界面的出现动画时,使用到Canvas Group,一定要仔细检查动画中的Interactable和Blocks Raycasts 是否勾选,只有这两个都勾选,按钮才能够正常使用
在这里插入图片描述
另外,当UI处于后台状态时,最好把Interactable和Blocks Raycasts 取消选中,因为Alpha只是控制透明度,需要控制在后台时按钮不会被误触
在这里插入图片描述

(初学unity遇到的问题,如果文章中有错误欢迎指出)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以按照以下步骤实现: 1. 创建一个 UI 按钮和一个 UI Panel,将 Panel 的 Canvas Group 的 alpha 值设为 0,即隐藏 Panel。 2. 给按钮添加一个 OnClick 事件,将事件指向一个脚本中的一个函数。 3. 在脚本中,定义一个 bool 变量来表示 Panel 是否显示,以及一个 AudioSource 变量来存储声音。 4. 在 OnClick 函数中,判断当前 Panel 是否显示。如果显示,则将 Panel 隐藏,并停止播放声音;如果未显示,则将 Panel 显示,并播放声音。 5. 在播放声音,将 AudioSource 的 clip 属性设置为要播放的音频,然后调用 Play 方法播放;在停止播放声音,调用 Stop 方法即可。 以下是示例代码: ```csharp using UnityEngine; using UnityEngine.UI; public class ButtonController : MonoBehaviour { public GameObject panel; public AudioClip audioClip; private bool isPanelActive = false; private AudioSource audioSource; void Start() { audioSource = GetComponent<AudioSource>(); } public void OnButtonClick() { if (isPanelActive) { panel.GetComponent<CanvasGroup>().alpha = 0; isPanelActive = false; audioSource.Stop(); } else { panel.GetComponent<CanvasGroup>().alpha = 1; isPanelActive = true; audioSource.clip = audioClip; audioSource.Play(); } } } ``` 在上面的代码中,我们在 Start 函数中获取了 AudioSource 组件,这样就可以在运行动态地将音频文件指定给它。在 OnButtonClick 函数中,我们通过判断 isPanelActive 变量的值来确定是显示 Panel 还是隐藏 Panel,以及是播放声音还是停止播放声音。在播放声音,我们通过将 audioSource.clip 赋值为要播放的音频文件,然后调用 audioSource.Play() 方法来播放声音。在停止播放声音,我们只需要调用 audioSource.Stop() 方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值