【发布时间】:2023-03-03 19:04:02
【问题描述】:
我正在通过脚本创建纹理图集。我使用 6 张图片来完成此操作,代码如下所示:
atlasTextures = new Texture2D[6] {frontTexture, topTexture, backTexture, bottomTexture, leftTexture, rightTexture };
Texture2D atlas = new Texture2D(1024, 1024);
Rect[] UVs = atlas.PackTextures(atlasTextures, 2, 1024);
GetComponent<Renderer>().material.mainTexture = atlas;
打包的结果是这样的:
问题是,为什么这段代码会产生这么多空白?由于我将始终只使用 6 个纹理,是否可以使图集更小一些?
【问题讨论】:
-
我猜你的图像大约是 256x256,而你创建了一个 1024x1024 的图集,所以难怪。使其成为您尺寸的倍数。 768x768 已经可以为您节省一些。不知道 512x768 是否也可以。
-
这些纹理中的每一个都是 167x167。我将尺寸更改为 Texture2D(512, 512) 和 PackTextures(atlasTextures, 2, 256);而且它更小。你知道 PackTextures() 中的第三个参数是做什么的吗?
-
这是图集的最大尺寸。
标签: c# unity3d textures uv-mapping texture-packing