Unity 4.6的使用匿名delegate处理uGUI控件事件绑定的问题
来源:程序员人生 发布时间:2015-03-31 08:06:04 阅读次数:3281次
最近在尝试Unity 4.6新版的uGUI。Unity很多操作是要在Inspector中指定,这类方式10分容易上手,乃至1些策划、美术同学也能够做1些东西,很不错。但是有些情况对程序来讲就不合适了。例如,我有10个技能按钮,当点击到某个按钮时触发其对应的技能。如果每一个按钮都手动绑定到某个函数,是否是很麻烦?另外,绑定的这个函数还是没有参数的,难道要写10个函数处理同1个逻辑吗?瞬间觉得10分蛋疼,有无?
针对这类情况,给出1个解法,假定我们已编辑好了n个Button对象:
-
public class UISkillPanel : MonoBehaviour
-
{
-
-
void Start()
-
{
-
-
List<SpellInfo> spellList = LocalPlayerData.Inst.SpellList;
-
-
for (int i = 0; i < spellList.Count; i++)
-
{
-
SpellInfo spell = spellList[i];
-
GameObject btnGO = GameObject.Find(string.Format("SkillButton{0}", i));
-
-
-
Button btn = btnGO.GetComponent<Button>();
-
btn.onClick.AddListener(
-
delegate()
-
{
-
this.onSkillButtonClick(spell);
-
}
-
);
-
}
-
}
-
-
void onSkillButtonClick(SpellInfo spell)
-
{
-
Debug.Log(string.Format("Spell Button Clicked : {0}.", spell.Name));
-
}
-
}
此写法动态传入spell参数,也解决了按钮与技能对应的关系问题。:)
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠