unity 动态匹配按钮的点击事件
我们在UI的时候,肯定少不了创建Button,既然是按钮肯定少不了点击事件,如果按钮少了还好说,通过unity面板进行可视化操作就好了,但如果一个UI里面有大量的按钮,一个游戏里有很多重复场景,那么我们在制作UI的时候就会产生大量的重复操作,《代码整洁之道》里有一句话说的很好:重复是万恶之源。代码如此,开发的方方面面都是如此。
跟小伙伴闲聊的时候得知,可以去制作一个按钮的匹配的脚本,创建按钮后去动态的匹配每个按钮的点击事件,本着能偷懒就偷懒的原则,于是琢磨了一番。
思路:在创建Button时,按钮命名要一致,例如所有的开始按钮都叫“Begin”,所有的关闭按钮都叫“Close”,这样我们就可以通过gameObject.name去获取按钮的名字,然后通过这一线索去动态添加点击事件(onClick.AddListener())。
第一步:准备工作
我们在unity中创建好两个Button并命名为“Begin”和“Close”,然后创建脚本UIManager
创建一个Button数组用于存放按钮。
在准备两个点击事件,随意命名只要自己知道就好(口胡)。
第二步:准备数据
每当有这种一一对应的需求的时候,我总是第一时间想起Dictionary
词典的键是string类型的,自然是Button的名字。
词典的值是UnityAction类型的,这是unity封装的一个事件(只有不带参的,如果需要带参的话可以继承之后重写方法)。
这里看不明白的大概需要百度一下委托和事件。
第三步:为按钮匹配点击事件
多个重复性工作怎么办,循环
拿到数组后取Button的名字
取到名字后取词典中取对应的值
取到值后为对应的按钮动态添加点击事件