小言_互联网的博客

UI框架总结

323人阅读  评论(0)

这个框架是SIKI学院上的一门课程,学完以后,写个博客记录一下,方便以后复习。

首先,UI部分一Panel为单位,把UI部分分为各个面板来进行管理,然后制作成Prefab放到Resources来进行加载实例化。项目不同,UI也不同,所以UI面板需要根据需求去制作。

需要得到这些Prefab的地址,来使用Resources加载。这里使用Json来保存每个面板的的地址,用枚举来表示面板的种类,一个面板对应一个枚举类型,然后解析到json数据,存储到字典中,当需要加载某个面板时,把这个面板对应的类型传递过来,根据类型在字典中查找对应的路径,然后使用Resources加载并实例化出来。

解析Json我前面已经写过了,这里就不重复了。

给所有的面板写一个基类,方便我们以后管理,所有的面板都有四个状态,进入、暂停、继续和退出,这四个状态写在基类中,因为每个面板的管理都要继承这个基类,所以方便我们管理,然后就是给我们所有的面板添加各自的管理类。



我们还需要一个根据类型来得到面板的方法,创建一个字典用来保存我们所有实例化出的面板,参数为面板类型和面板基类,因为每个面板的脚本都继承成面板基类,所以我们在每个面板上都有一个面板基类,创建一个方法,参数为面板类型,首先判断这个类型对应的面板是否存在字典中,如果存在则返回这个面板基类,如果不存在,则创建一个,并放到Canvas下。创建步骤是,先根据类型,通过保存路径的字典中,得到这个这个路径,在通过Resources加载实例化出来,设置父物体,返回这个物体上的面板基类。

面板的显示和跳转具体的如何显示和跳转代码我们放到对应UI面板管理器去做,就是对应的四个状态,开始状态就是,这个面板被实例化后,把它设置为隐藏,退出状态,则把这个面板隐藏掉,暂停状态,则是这个面板中的不能交互,继续状态,则把交互启动。

状态的调用我们使用栈来表示,创建一个栈,用来保存所有显示的UI面板。首先是入栈,就是当一个面板被实例化后,就要放入到这个栈里。在入栈时,我们要先判断这个栈的栈顶是否有元素,如果有则把这个面板设置为暂停状态,我们调用一下它自身的开始状态。然后调用我们创建得到面板的方法。


最后就是出栈,出栈首先我们要知道这个栈顶是否有元素,如果有元素,则把这个元素取出,并调用这个面板中对应的离开状态,在判断当元素取出后栈里还是否有元素,如果有元素就调用这个元素的继续状态。


面板的具体显示与隐藏代码,使用的CanvasGroup,具体的代码我下面放一张,都是相同的,就是设置CanvasGroup的Alpha和blocksRaycasts。

本人正在学习中,如果有错误欢迎各位大佬提携提携小弟,感激不尽!!!


转载:https://blog.csdn.net/weixin_44149074/article/details/101622640
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场