微信小游戏Atlas优化方案尝试

2026/01 17 11:01

问题提出:

Unity的Atlas一定为NPO2,比较浪费空间,可以使用ASTC6x6的非NPO2,节省面积

方法尝试

散文件引用方式

png.meta中有资产的全局guid,例如340767bb6f19e994d80df6bfab11b0ba

UIImage引用此Sprite时:
m_Sprite: {fileID: 21300000, guid: 340767bb6f19e994d80df6bfab11b0ba, type: 3}

注意:fileID不是指文件ID,是指内部资源ID(SpriteID)
guid才是真正的文件ID

其中21300000为Unity的默认资产,在这里代表为整个图片(默认)

多图的引用方式

png.meta中有资产的全局guid,例如340767bb6f19e994d80df6bfab11b0ba
以及子图切割信息

  • serializedVersion: 2
    name: v1_fuhaifanjiang_btn_gry
    spriteID: eb7fb90c6ee167148a086af2f285a5d4
    internalID: 194391527
    其中spriteID是不用的,要用internalID
    UIImage引用此Sprite时:
    m_Sprite: {fileID: 194391527, guid: 340767bb6f19e994d80df6bfab11b0ba, type: 3}

如何重定向

1、所有的散文件用TexturerPacker打包成合图
并为散文件生成一个全局的internalID
2、删除散文件
3、进行Prefab替换:
将散文件的
{fileID: 21300000, guid: xxxx, type: 3}
替换为
{fileID: internalID, guid: yyyy, type: 3}