细说精灵尺寸与 Unity3d GUI
¶Sprite & Texture
一般而言,精灵(Sprite)是由贴图(Texture)和矩形(Rect)构成的。矩形描述了精灵使用的是贴图中的哪个部分。
Sprite = Texture + Rect
通常一张贴图只对应一个精灵,于是矩形就和整个贴图大小相同。例如一张 512 * 512 的贴图,矩形则是 Rect(x=0, y=0, width=512, height=512);但从优化的角度来说,一张贴图可以由多个 Sprite 所共享,在加载的时候只需要一次 IO,且在渲染的时候,可以共用一个 Draw Call 。在这种情况下,在同一张贴图上使用不同的矩形框就能呈现出不同的 Sprite,例如:
- Rect(x=0, y=256, width=256, height=256)
- Rect(x=256, y=256, width=256, height=256)
- Rect(x=0, y=0, width=256, height=256)
- Rect(x=256, y=0, width=256, height=256)
以上 4 个矩形把一张 512 * 512 的贴图分割成 4 个精灵。
还有一种情况是,游戏引擎在优化资源的时候,可以把原来单张的贴图自动或手动合并成一张独立的大贴图来达到同样的优化目的。