Unity (游戏音效模块的封装)

Unity (游戏UI模块的封装)

前言

之前介绍过Unity声音模块的封装,这次我将为大家继续带来Unity的UI模块的封装,当然在做一些demo的时候,我们常常不会花费太多的时间在这上面,我们都会通过拖拽脚本到button的On Click()上,但是当我们做的游戏有很多地方要使用UI时,这样一个个添加就太麻烦了,所以我们要对UI进行封装。
在封装之前,先让我们了解一下MVC框架:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
如下图:
Unity (游戏音效模块的封装)
当我们要为UI添加一些事件时,就可以通过这样的结构来实现

如图:
Unity (游戏音效模块的封装)
我们以一个Panel为一个单位,在Panel上挂载UIBase的子类,在一开始运行,就让子类去寻找它一下的所有层级(命名为结尾带“_N”的物体),当找到时就把信息传到UIMgr里面,并为其添加UIBehaviour脚本。
如图:
Unity (游戏音效模块的封装)
当然UIBase的信息也要传到UIMgr里面
Unity (游戏音效模块的封装)
当我们要使用时,只需要从UIMgr里面获取就好了。

下面就是具体的代码讲解

就和上面说的一样:我们以一个Panel为一个单位,在Panel上挂载UIBase的子类,在一开始运行,就让子类去寻找它一下的所有层级(命名为结尾带“_N”的物体),当找到时就把信息传到UIMgr里面,并为其添加UIBehaviour脚本。
Unity (游戏音效模块的封装)
这时需要把信息注册到UIMgr内,所以UIMgr要提供一个Rest方法
Unity (游戏音效模块的封装)

Unity (游戏音效模块的封装)
把信息都注册进去后,我们需要添加监听事件了
在UIBase里面提供一个AddButtonListen()的方法,我们在使用的时候只要传入一个名字和一个需要添加的方法就行了,名字我们可以通过UIMgr来获得,所以UIMgr要提供1个获得物体的方法
Unity (游戏音效模块的封装)
Unity (游戏音效模块的封装)

还有最重要的一步,那就是执行顺序的问题,我们要让UIMgr里面的字典在最开始就创建(不然会出现很多的错误),还有每个类里面awake不要随意就改成Start,这样执行顺序也会有误!!!我们点击UIMgr脚本,改变他的执行顺序,让他在其他脚本执行之前就执行。

如图:
Unity (游戏音效模块的封装)
然后更改顺序
如图:
Unity (游戏音效模块的封装)
好了,让我们来测试一下吧!
Unity (游戏音效模块的封装)
我们创建一个UITest脚本用来测试,并将它挂到Panel上,这个脚本是要继承之前的UIBase的,我们在脚本中添加监听事件。
Unity (游戏音效模块的封装)
回到unity当我依次按下1-3的按钮

Unity (游戏音效模块的封装)
可以看到这样就成功了。