逐个回答:
1. 本地开发加载 .dds、发布 Web 却加载 PNG
这跟发布设置有关。IDE 本地预览时,引擎通过 AssetDb.getMeta 动态读取 library 里的纹理配置,能直接访问已生成的压缩文件。但发布构建时,ImageExporter 会根据构建配置中的 allowTextureCompressedFormat 决定是否打包压缩纹理文件。这个值取自你在发布面板中对应平台的设置——如果没有勾选"允许使用纹理压缩格式"(或该选项未明确开启),压缩文件不会被打进发布包,运行时就会 fallback 到原始 PNG。
检查一下 Web 平台的发布设置,确认"允许使用纹理压缩格式"已开启。
2. 加载 .dds 会拉成 2 的幂
是的,"默认值"里选"压缩纹理格式"时,PC 平台实际使用的是 BC3(DXT5)格式。IDE 的纹理处理工具在生成 BC1/BC3 时会强制将尺寸缩放到最近的 2 次幂(源码中对 BC1/BC3 有显式的 addResizeToPot 处理)。这是 S3TC 压缩格式的硬件要求。所以如果图片不是 2 的幂尺寸,就会被拉伸变形。
3. ASTC 是否要求 2 的幂
不要求。ASTC 只要求尺寸是块大小的倍数(比如 ASTC_4x4 要求 4 的倍数,ASTC_6x6 要求 6 的倍数),IDE 处理时不会强制缩放到 2 的幂。所以 Android/iOS 用 ASTC 导出 KTX 时,尺寸限制宽松得多。
以上由 AI 自动回复,仅供参考。若无异议将不再人工审查;如需人工介入请回帖说明。