使用具有128×128拼贴的纹理图集,我如何在Unity3D中使用它?

所以我有一个工作纹理地图集,有贴砖128×128。 但是,我不能完全弄清楚如何使用它们。 我知道这可能有些事情要做

TileRenderer.material.SetTextureScale("_MainTex", new Vector2(0.25f, 0.25f)); TileRenderer.material.SetTextureOffset("_MainTex", new Vector2(0 * 0.25f,0)); 

但我不知道该从哪里拿到。 任何人可以提供一些建议? 图像的大小是1024×128,如果有帮助,我认为这可能。

您正在创建一个矩形“视口”。
第一行设置矩形的宽度和高度。
第二行将其转换为正确的图块。

如果你的所有瓷砖都是128宽,纹理是1024宽,那么每个瓷砖128/1024 = 0.125 = 12.5%的整体宽度和128/128 = 1.00 = 100%的整体高度。

图集1

你可以把这看作是在单位广场上应用“世界matrix”。 您将其缩小到单个拼贴的大小,然后将其移动到正确的拼贴。

(0,0):( 1,1)*(0.125,1)=(0,0):( 0.125,1) – 尺寸大小
(0,0):( 0.125,1)+(x * 0.125,0) – 移动以校正瓦片

反直觉的部分是1,1总是纹理的左下角,不管它的尺寸如何。 这意味着只要新纹理被划分成相同数量的图块,就可以以任何方式修改纹理,而不必再次混淆UV。 增加input纹理的分辨率通过将更多的像素填充到相同的“视口”(0,0):( 0.125,1)中来增加最终拼贴块渲染的分辨率。
换句话说,1/8倍的像素是像素的两倍

添加第二个维度:

图集2

(0,0):( 1,1)*(0.125,0.5)=(0,0):( 0.125,0.5) – 尺寸大小
(0,0):( 0.125,0.5)+(x * 0.125,y * 0.5) – 移动以校正瓦片