0
点赞
收藏
分享

微信扫一扫

【Unity】场景所有Button添加点击事件

算是一个扩展,游戏中很多按键都会有点击音效,因为按键太多,如果每个按键都手动绑定或者代码绑定监听事件,都比较繁琐,而且容易遗漏。
我的做法是获取场景中所有的Button,统一添加监听事件不需要单独添加音效事件。
待实现功能:

  1. 如果不同的按键有不同的点击音效,可以在命名上做一下区分,添加一个后缀,在统一添加监听事件时,根据不同的后缀名,来绑定不同事件。
  2. 如果场景中按键较多,可以利用协程,分批次进行处理,将运算量分散。
  3. 如果有动态加载的按键Object,现有2个方案可供参考(未实际测试,只是一个设想),一是直接获取Prefab添加监听事件,二是在动态加载的过程中,判断是否有Button组件,有则添加事件。
    目前先实现基础功能,项目中可根据实际情况,继续扩展 ··· ···
void GetAllButtonAddListener()

//获取场景所有物体
GameObject[] allObj = Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[];
int btnCount = 0;
Button tmpButton;
for (int i = 0; i < allObj.Length; i++)

tmpButton = allObj[i].GetComponent<Button>();
if (tmpButton != null)

btnCount++;
tmpButton.onClick.AddListener(() => SoundManager.instance.PlaySound(Clip.button));


Debug.Log("<color=green> 当前场景共有:物体 </color>" + allObj.Length + "<color=green> 个,Button组件 </color>" + btnCount + "<color=green> 个 </color>");


举报

相关推荐

0 条评论