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与其它模块交互

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

游戏UI系统设计的更多相关文章

  1. Unity3D游戏UI开发经验谈

    原地址:http://news.9ria.com/2013/0629/27679.html 在Unity专场上,108km创始人梁伟国发表了<Unity3D游戏UI开发经验谈>主题演讲.他 ...

  2. 游戏UI框架设计(一) : 架构设计理论篇

    游戏UI框架设计(一) ---架构设计理论篇 前几天(2017年2月)看到一篇文章,国内王健林.马云等大咖们看好的未来十大最有"钱途"产业中,排名第一的就是"泛娱乐&qu ...

  3. 游戏UI框架设计(二) : 最简版本设计

    游戏UI框架设计(二) --最简版本设计 为降低难度决定先讲解一个最简版本,阐述UI框架的核心设计理念.这里先定义三个核心功能: 1:UI窗体的自动加载功能. 2:缓存UI窗体. 3:窗体生命周期(状 ...

  4. 游戏UI框架设计(三) : 窗体的层级管理

    游戏UI框架设计(三) ---窗体的层级管理 UI框架中UI窗体的"层级管理",最核心的问题是如何进行窗体的显示管理.窗体(预设)的显示我们前面定义了三种类型: 普通.隐藏其他.反 ...

  5. 游戏UI框架设计(四) : 模态窗体管理

    游戏UI框架设计(四) --模态窗体管理 我们在开发UI窗体时,对于"弹出窗体"往往因为需要玩家优先处理弹出小窗体,则要求玩家不能(无法)点击"父窗体",这种窗 ...

  6. 游戏UI框架设计(五): 配置管理与应用

    游戏UI框架设计(五) --配置管理与应用 在开发企业级游戏/VR/AR产品时候,我们总是希望可以总结出一些通用的技术体系,框架结构等,为简化我们的开发起到"四两拨千金"的作用.所 ...

  7. 游戏UI框架设计(7): 资源国际化技术

    游戏UI框架设计(7) --资源国际化技术 说起"资源国际化"技术,个人认为可以追述到微软Window2000 PC操作系统的发布,在这之前windows98操作系统的开发都是先由 ...

  8. 游戏UI框架设计(6): 消息传递中心

    游戏UI框架设计(6) --消息传递中心 最近一直忙于一个益智类游戏的研发工作,所以博客有段时间没有更新了.经过朋友的督促,决定这两天立刻完成最后的两篇博客讲解(UI框架).说起“消息传递中心”,或者 ...

  9. Unity3D_(游戏)甜品消消乐03_游戏UI设计

    甜品消消乐01_游戏基础界面 传送门 甜品消消乐02_游戏核心算法 传送门 甜品消消乐03_游戏UI设计    传送门 (源码在文章最下面~) 实现过程 游戏界面UI 分数与时间的UI显示 有关游戏U ...

随机推荐

  1. odoo13之文件预览widget/模块

    本文示例代码可查看github仓库:odoo13_file_preview 文件预览效果图展示 效果描述: 1.当点击图片或者文件时展开图片. 2.当点击关闭按钮时关闭图片预览. 3.当点击下载按钮时 ...

  2. cxuan读者的外包面试之旅

    最开始是打算面试外包公司刷经验,等经验差不多了,再去甲方尝试,可惜不太顺利. 一.迈思(面试了30分钟) 自我介绍 左连接(a 表左连接 b 表,a 表全部数据出来,b 表没有的数据为空) a 表左连 ...

  3. Python爬虫教程:验证码的爬取和识别详解

    今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻 ...

  4. Paper English

    论文中的英语 单词 a arange 整理 ambiguity 含糊的 aggregate 总量 auxiliary 辅助的 alleviate 缓解 aberrant 异常的 akin 类似的 Ac ...

  5. 【lhyaaa】最近公共祖先LCA——倍增!!!

    高级的算法——倍增!!! 根据LCA的定义,我们可以知道假如有两个节点x和y,则LCA(x,y)是 x 到根的路 径与 y 到根的路径的交汇点,同时也是 x 和 y 之间所有路径中深度最小的节 点,所 ...

  6. 解决Android v4、v7包导入标红问题import android.support.v4.app.ActivityCompat;import android.support.v7.app

    如果有如下错误:import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity ...

  7. [leetcode/lintcode 题解] 微软面试题:公平索引

    现在给你两个长度均为N的整数数组 A 和 B. 当(A[0]+...A[K-1]),(A[K]+...+A[N-1]),(B[0]+...+B[K-1]) 和 (B[K]+...+B[N-1])四个和 ...

  8. 【Linux】linux history命令执行后显示历史命令执行时间

    vim  ~/.bashrc 或者 ~/.bash_profile  或者 获取root权限修改vim /etc/profile 最后添加 export HISTTIMEFORMAT="%F ...

  9. 【Redis】Redis开篇与如何安装单机版Redis,这次我会了!!

    写在前面 很早之前,就有不少小伙伴微信留言说:冰河,你能不能写一个Redis专栏啊,我最近在学习Redis,看书看不下去,学习视频又觉得视频太长了,还是看你的文章比较给力!哈哈,原来我写的文章能够让小 ...

  10. C#算法设计排序篇之10-桶排序(附带动画演示程序)

    桶排序(Bucket Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/693 访问. 桶排序的工作原理是将数组 ...