一个手游的图形技术关键性指标是: 内存占用, DrawCall和包大小。

这三个参数是训练有素的程序和UI美术都需要关注的重要问题。

接下来我们来讲解下UI美术怎么对待这三个问题。

内存占用

手机的内存不会明显区分内存和显存, 大部分都是共享访问的. 这里说的内存, 一般可以通过一些工具直接看到, 比如说XCode等图形上对内存影响最大的就是纹理, 而纹理上最关键的问题就是纹理的大小, 也就是纹理面积。

我曾经见过一些训练不是那么有素的UI美术, 用鼠标选中几个png文件, 点击属性告诉我: 诺, 你都看到了, 我这边的图片才占几kb, 为啥你总是说内存占用大纹理的内存占用, 只决定于纹理的面积以及发色数, 纹理面积就是长乘宽(像素), 发色数就是一般常说的: 16位色, 32位色。

之所以把内存占用放在首位, 是因为, 大多数的手机一旦超过限定内存就会开始清理后台挂起的程序, 实在清理不了只有杀掉最占内存的程序,这就肯定杀到了你写的游戏之上。

DrawCall(DC)

美术来理解这个概念可以这么说:  绘制一张图片需要耗费1次DC, 假设界面上有10个图标, 那就需要耗费10个DC。

而一般手游的DC需要限定在150个之内, 如何降低DC呢, 就需要通过Atlas技术来合并图片。

将多张图片打到一张纹理上的技术被叫做Atlas, 俗称大图或者图集, 被打之前的图也就叫小图。大图上的每个图元素叫做精灵。每个精灵被绘制无数次最终也只会耗费1个DC。

但我们不能把所有游戏用到的图片都打成图集, 这并不划算,我们会根据图的使用频率, 用途来按需打图集。

比如说:

1. 进游戏只看一次的宣传图, 为了方便制作和加载迅速, 做一张整图动态加载会比较好。

2. 反复查看的图标, 因为数量相对固定,数量不会膨胀, 我们就做成图集。

3. 但是类似于刀塔传奇中50+英雄, 普通玩家看不到那么多英雄但又被打成图集是不划算的, 所以损失一点DC按小图绘制及加载是正确方法。

4. 一般时候, 我们将尺寸小的图片打成图集, 配合大尺寸图片同时加载。

包大小

包大小对于游戏来说, 会影响的是玩家首次下载的时间, 如果连游戏都不下载, 做的再漂亮的游戏也是没用的。

降低包大小的方法很多, 例如:

1. 分包机制. 先玩小包, 根据需要下载大包, 多见于MMORPG

2. 良好的资源管理方法及习惯

3. 剔除冗余资源

4. 尽量使用3D渲染代替2D纹理图片

以上3个概念是游戏美术, 程序必须了解的重要概念。但一个合格的美术, 除了事后优化, 还需要做的是事前优化。

事前优化包括: 在游戏立项后, UI美术需要了解基本的二手卖号平台功能设计方案,出一套基本的对话框, 提示框, 图标装饰等的图素, 这些资源往往只有不到512见方的资源。利用这些图片可以拼凑出70%的界面及美化效果。在这之后的UI内容, 只是特效,动画的设计。

一些道理:

1. 进游戏因为内存超标就崩溃, 再漂亮的图片也是没用的。

2. 游戏是多门艺术的综合, 游戏美术的不仅要画的好, 还要能做出优化的好的资源。

3. 手游和端游的美术资源标准有本质区别, 资源做出来是给人看的, 不是屏幕. 因此高低分辨率的搭配, 尤为重要。

4. 还是那句话, 多看看别人做的游戏, 多问问别人怎么做的。

程序给UI美术上的必修课:内存占用, DrawCall和包大小的处理相关推荐

  1. 怎么禁止windows音频设备图形隔离程序_Windows 10中音频设备图形间隔内存占用较高的处理方法...

    在使用Windows 10的操作系统的时候,有时会出现程序或者其他的软件在使用时出现卡顿的情况.通过运行Windows 10的"任务管理器"中观察,发现有一个"Windo ...

  2. 在Windows电脑上修改图片内存大小的方法

    我们在网上进行一些报名操作时一般都会需要我们提供个人证件照,但是通常还会对证件照的内存占用大小进行限制,下面小编分享一下在电脑上修改证件照内存占用大小的方法: 1.找到需要修改大小的照片,鼠标右击照片 ...

  3. 探究Bitmap在Android中的内存占用

    一.Bitmap的内存占用检测 Bitmap 一直以来都是 Android App 的内存消耗大户,很多 Java 甚至 native 内存问题的背后都是不当持有了大量大小很大的 Bitmap,我们可 ...

  4. Unity项目中UI美术必须知道的程序要点

    原文地址:http://youxiputao.com/articles/4820 本文转载自IndieACE(游戏葡萄),是开发者DonaldW写给UI美术同事的一篇文章,原文题为<Unity项 ...

  5. 【云原生】Java 应用程序在 Kubernetes 上棘手的内存管理

    文章目录 引言 JVM 内存模型简介 非 Heap 内存 Heap 堆内存 Kubernetes 内存管理 JVM 和 Kubernetes 场景 1 - Java Out Of Memory 错误 ...

  6. 小程序/Vant UI 实现文件的上传

    小程序/Vant UI 实现文件的上传 第一次接触小程序上传的时候,自己经过一些实验测试并记录下来以供大家学习. 使用vant UI的官网地址:Vant Weapp - 轻量.可靠的小程序 UI 组件 ...

  7. Java程序内存分析:使用mat工具分析内存占用

    1. 用jmap生成堆信息 2. 将堆信息导入到mat中分析 3. 生成分析报告 Histogram Dominator Tree Top consumers Leak Suspects MAT 不是 ...

  8. Arm和Unity联合推出:适用于移动应用程序的3D美术优化-[5]光照

    目录 1.光照 - 概述 1.概述 2.关于渲染管线的说明 2.光照模式和类型 1.光照模式 2.烘焙光照 3.实时光照 4.混合光照 5.实时光源和光源类型 6.总结 3.静态对象的光照 1.概述 ...

  9. Arm和Unity联合推出:适用于移动应用程序的3D美术优化-[3]纹理

    目录 1.纹理-简介 1.1.概述 1.2.什么是纹理 1.3.总结 2.纹理大小.颜色空间和压缩 2.1.概述 2.2.纹理大小 2.3.纹理颜色空间 2.4.纹理压缩 2.5.总结 3.纹理图集 ...

最新文章

  1. 一些重要的算法The Most Important Algorithms
  2. 【渝粤题库】陕西师范大学291003综合英语(三)作业(高起专、高起本)
  3. 8Linux磁盘划分、RAID
  4. Q83:怎么画多个PLY文件组合的图形[Multiple-Mesh Objects]
  5. 剑指offer——python【第16题】合并两个有序链表
  6. TOGAF 10 正式发布
  7. 合肥大学c语言试题及答案,合肥工业大学C语言题库程序填空题库2.doc
  8. 安卓脚本用什么写_什么是抖音脚本?脚本有什么用?
  9. R语言绘制bivariate polar plots
  10. TweenMax逐帧动画
  11. 如何将pdf在线翻译成英文?
  12. 微信小程序格式化数字在插值语法里面使用
  13. Replicator简介
  14. 中枢神经的运动控制理论,神经网络运动控制方式
  15. 旋转编码器消抖程序设计
  16. [原创]持续给力:jQuery实现表格隔行变色效果案例详解
  17. 什么是域名被墙?域名被墙了如何解决?
  18. html下拉刷新原理,下拉刷新的基本原理
  19. 如何看待同济版《线性代数》引发激烈争议?
  20. 从上升边和带宽关系的两种公式说起

热门文章

  1. 字符串在Python内部是如何省内存的
  2. python中property方法有用_python中@property和property函数常见使用方法示例
  3. python基础list_python基础之List详解
  4. 从零开始数据科学与机器学习算法-学习向量量化(Learning_Vector_Quantization)-08
  5. 深度学习-Tensorflow2.2-卷积神经网络{3}-卫星图像识别卷积综合实例(二分类)-13
  6. java mysql settings_Java中使用MySQL从安装、配置到实际程序测试详解
  7. ubuntu安装qt4
  8. Spring 嵌套方法AOP不生效问题
  9. linux 服务 启动 关闭 列表
  10. go 数据类型和操作符