VR开发--搭建UI框架(1)

1、引言

一般来说:我们做精美的界面,肯定是按部就班的拖UI控件,不停的引用来调用制作。但是随着我们掌握的熟练度,会发现一些类似的界面完全可以封装起来,而且通过进一步优化,就成为我们熟悉的框架,那么什么是UI框架?UI框架用来做什么?

2、场景假设

首先我们假设有两个面板,每个面板都有一个按钮
我们通过按钮的点击来控制另一个画面的显示。
Unity官方给出了很不错的建议。

Paste_Image.png

但是我们需要挂在两个脚本:

脚本1:挂在登录面板上(这两种方法都可以)
Paste_Image.png
脚本2:挂在注册面板上
Paste_Image.png
1-优点:

这样做,就完美达到一个控制另一个,交互显示的需求,而且脚本也中也比较干爽。
注:方法二经过测试,对程序效率有明显的提升,而且逻辑更精确。

1-问题:

假如有很多个面板,那么我们脚本岂不是一大堆,每一个有联系的面板中都需要去进行修改,写一大堆没有营养的代码快线。

2、解决问题

用上面的方式,面板很少的情况下还可以,但是假如有很多面板呢?
而且我们的界面不可能全部扔进场景中,我们需要热加载,或者动态加载。
那么我们就需要UIManager来解决这些遇到的问题。

Paste_Image.png

将这个脚本挂在摄像机上,就可以控制两个面板的开启与关闭了


Paste_Image.png

当然要注册一下面板:

Paste_Image.png
2-优点

这样做,确实也可以,脚本变成一个。

3-问题

我们还是需要一一指定相应的面板来进行控制,还是麻烦!

3、大招
3-1、将面板保存为一个个预制物,而通过Resources加载(动态加载)
Paste_Image.png
3-2、在我们的UI管理类中:提供方法来加载控制
Paste_Image.png

注:这里面的问题,下面3-6、会提出解决办法

3-3、因为这个管理者是全局唯一的,所以采用单例模式
Paste_Image.png

最终效果:


Paste_Image.png
3-4、因为测试阶段,所以还是需要之前的面板脚本

而在两个面板的脚本中


Paste_Image.png

Login


Paste_Image.png

Registe


Paste_Image.png
3-5、我们挂在相应的脚本,就可以发现成功了
Paste_Image.png
3-6、解决命名空间的问题

首先我们添加命名空间,框架一般都是我们自己的,随时可以抽走,更换。所以我们都会加自己的命名空间!

Paste_Image.png
Paste_Image.png

而这个时候,我们通过预制物加载,发现就找不到物体了
打印输出:

Paste_Image.png
Paste_Image.png

既然有了这个讨厌的命名空间,那就强拆

Paste_Image.png

结果一看,完美!


Paste_Image.png

你可能感兴趣的:(VR开发--搭建UI框架(1))