跳到正文
文档
本页内容

图片与字体

哪些图片能加载、多大的尺寸合适,以及为什么内置形状几乎总是比图片更好

要点

  • 能用形状就用形状
  • 图片的上限:移动端关卡为2048,其他情况为4096
  • 图片尺寸大致与它在屏幕上的尺寸相同。向上取整到下一个2的幂

格式与尺寸

引擎能从文件字节中解码的格式都能加载。实际上就是png和jpg

游戏不限制文件,限制来自硬件:

设备最长边
Android,保证支持4096
Android,通常8192到16384
桌面PC最多32768

内存

真正的限制是内存。无论文件多大,图片在内存中都以原始像素存储。png每个像素占4字节。jpg占3字节,因为它没有透明通道

尺寸内存(png)
512×5121MB
1024×10244MB
2048×204816MB
4096×409664MB
8192×8192256MB
注意

一张8192的纹理,单张图片就要占四分之一GB。在手机上这不是变慢,而是崩溃

由玩家决定的部分

每个玩家的图形设置中有三项决定图片占用多少内存:

  • 加载时是否压缩图片。压缩会把上面的数字除以4到8
  • 图片在内存中允许的最长边。边长减半,内存变为四分之一
  • 是否生成Mipmap,也就是用于小尺寸绘制的缩小副本

手机默认压缩图片,并限制在2048。桌面端保留完整图片,并限制在4096

你需要做的只是图片上的一个字段:它是哪种图片。这个字段位于资源列表中图片的旁边。照片最能承受缩放和压缩。边缘锐利的绘图承受得较差

像素画从不压缩、从不生成Mipmap、从不平滑,无论设备倾向于怎样处理

Mipmap

Mipmap可以防止小图片闪烁。它们是缩小的副本,图片在屏幕上显示得很小时,会代替完整图片绘制。它们会多占用三分之一的内存

没有Mipmap时,缩小的图片不会变平滑,而是会出现爬动的纹路。玩家可以关闭Mipmap,而像素画永远不会有Mipmap

一张在屏幕上只占200像素的4096图片,占用的内存是预先缩小到256的同一张图片的256倍

形状优先于图片

形状在各方面都比图片便宜:没有文件,不占内存,没有版权问题。内置形状是真正的几何体,而不是贴在矩形上的图片。它们没有会被绘制然后丢弃的透明边缘

这在手机上很重要。在中端移动芯片上,一个有1000个物体的场景会把95%到97%的GPU时间花在像素着色上。一个形状只覆盖自身矩形的29.4%。带纹理的四边形其余部分都是透明的浪费

真正需要一张画面时才需要图片:标志、照片、手绘作品。几何图形请使用形状。如果没有需要的形状,就在形状编辑器中画出来

字体

字体可以加载ttf、otf、ttc格式。没有自带字体时,文本会用系统中现有的字体绘制,而不同设备上的字体各不相同

字体缓存是预先准备好用于绘制的字符集合。一个生成器会根据关卡中包含的文本重新构建它。等文本不再变化后再运行这个生成器

接下来:关卡的性能预算、移动设备