zoukankan      html  css  js  c++  java
  • 游戏UI系统设计

    1.需要实现的功能

    • UI界面的管理(窗体加载、窗体显示、窗体隐藏、窗体销毁等)
    • UI分层次(比如弹窗、广播信息需要在上层)
    • UI界面的出场、入场动画
    • UI界面的显示效果(比如带透明背景、带高斯模糊背景等)
    • UI可以动态更新

    2.程序方面设计

    • UI需要MVC分离
    • UI与其它模块交互信息需要低耦合

    3.具体怎么做

      可以知道的是,首先UI界面的设计需要采用MVC模式,将界面的显示独立出来,这一块需要继承MonoBehaviour,以便挂载到UIPrefab上。

      View:

      1.只做数据的展示,而不做数据的处理。

      2.只接受controller的事件,对于其他外部的事件一概交由controller处理。

      3.按钮的响应回调,建议也放到controller里面去处理。

      4.view的创建,也交到controller里面处理。

      Controller:

      1.接受外部的数据、事件并且做好处理,然后存入对应的数据层,同时通知view层做显示。

      2.controller与view之间的交互,最好采用事件通知,而不是直接的调用。

      3.对于data层,可以在controller直接写,也可以独立出来。

      上面说的MVC分离,针对的是单个的界面而言,比如排行榜界面,邮件界面等,那么整体的又该如何来管理呢?

    UI界面的管理

      对于UI界面管理,其实需要做这些事情:

      1. 明确UI的层级,这个在最开始的时候就要设计好,按照功能来讲,一般游戏都有的,最低层级的背景,然后是正常UI内容,然后是各种弹窗,然后最上层可能是系统通知一类,

      那么假设现在有背景、正常UI内容、弹窗、系统通知,那么我们在做的时候就应该设定好这四层,并且每一层的层次都是依次递增的,不然的话显示就会不正确。

      2. UI的资源加载,一般来说,是将一个个UI分模块制作成为预制体,然后在需要用的时候,通过资源加载,然后将其实例化显示,在这个过程中,我们按照上面提到的,那么应该先

      创建每一个UI界面的Controller,然后在需要的时候,通过controller来显示对应的View。但是在这个过程中,有些界面不是很常用,可能偶尔用一次,就不用了,那么这个时候就会

      涉及到如何来管理这些加载进来的资源,对于这种不常用的窗体来说,显示完后,就应该把他给销毁了(节省内存),而对一些常用的,可能就需要保存引用,避免频繁加载资源带来的

      IO问题。

    UI显示效果

       对于UI带有特殊效果的,比如有进场、出场动画,弹窗有黑色半透明背景,或者带有高斯模糊背景的弹窗,这些效果应该如何处理。

      通常的做法是给每一个UI进行分类,比如有出场动画、入场动画的是一类,没有任何动画的是一类,有背景的是一类,有高斯模糊的是一类,然后在写所有UI类的父类的时候,在父类里面写Enter,Exit等

      状态方法,在这些方法中调用一些对应的显示方法,这些显示方法则是根据UI分类不同而不同,这样就统一做出了UI显示效果,而不用每一个UI都去写一遍,当然,可能某一个UI有不同的显示动画,这个

      时候,可以覆写父类的动画方法,这样就OK了。

    UI与其它模块交互

      要降低耦合,那就使用事件通知,避免直接调用,一般来说这是个简单但是却非常有效的方法。

  • 相关阅读:
    ireport +jasperreport 中文不能显示
    ireport +jasperreport 中文不能显示
    JDBC的批量处理语句
    tattoo实现adhoc连接
    tattoo实现adhoc连接
    网络突然掉线或者不小心putty被关掉等等原因 造成安装过程被中断怎么办?
    网络突然掉线或者不小心putty被关掉等等原因 造成安装过程被中断怎么办?
    Linux SSH命令大全,新手必看SSH命令
    修改SSH端口和修改vsftpd端口更安全
    Linux SSH命令大全,新手必看SSH命令
  • 原文地址:https://www.cnblogs.com/leiGameDesigner/p/8650110.html
Copyright © 2011-2022 走看看