|
- xxxx.spriteatlas图集文件的中的数据组成介绍:
- packables: 需要打到图集中的子贴图文件列表
- packables:
- - {fileID: 21300000, guid: 478628c2af414fb44a3bac2c7820d9ad, type: 3}
- - {fileID: 21300000, guid: 4f96880b7f3b2b941aa951cae5268e08, type: 3}
- totalSpriteSurfaceArea: 所有贴图所占的大小
- m_PackedSprites:已经被生成到图集大贴图中的子贴图文件列表
- m_PackedSprites:
- - {fileID: 21300000, guid: ac6b84117a872fb4381479a066a6c095, type: 3}
- - {fileID: 21300000, guid: c0f83f41e1107f745b6810a95e7e31fd, type: 3}
- m_PackedSpriteNamesToIndex:已经被生成到图集大贴图中的子贴图名字到索引的记录
- m_PackedSpriteNamesToIndex:
- - BuffIconPassive
- - DeBuffIcon005
- xxxx.spriteatlas 图集特性介绍
- 创建一个图集,往里添加贴图保存,并不会生成m_PackedSprites 相关数据
- m_PackedSprites 数据没有生成前,无法根据图集获取子贴图数据,也就是无法真正使用该图集
- 生成 m_PackedSprites 数据后才可以看预览子贴图在图集中实际填充情况
- 生成 m_PackedSprites 数据的2种现成方式:
- 点击图集的inspector中的 Pack Preview 按钮
- 运行时编辑器自动检查,生成所有相关图集的 m_PackedSprites 数据
- 代表m_PackedSprites数据是否生成过的哈希文件缓存机制:
- 作用:在图集内容和配置不变的情况,不重新生成数据(打大量图集时,启动游戏生成较慢)
- 文件名是一个哈希值:根据图集内容和配置计算生成
- 工程下存放的目录Library\AtlasCache\下
- 哈希值不变的情况下,点击Pack Preview 按钮 也不会重新生成
- 项目开发工具一键生成图集面临的问题:
- 生成图集后怎么自动生成m_PackedSprites 数据:
- 调用生成接口:SpriteAtlasUtility.PackAtlases(spriteAtlases.ToArray(), activeBuildTarget, true);
- 重新打已有图集内容和配置不变的情况下,怎么重新生成m_PackedSprites 数据
- 图集文件被重新生成,带来是的m_PackedSprites 字段的数据被清除
- 因为缓存下已有对应的哈希文件,就算调用SpriteAtlasUtility.PackAtlases 底层也不会执行生成过程
- 解决方案:
- 获取图集关联的哈希值:调用接口SpriteAtlasExtensions.GetStoredHash获得图集的哈希值,此接口只能通用反射来调用
- 根据哈希值删掉AtlasCache 目录下对应的文件
- 再调用SpriteAtlasUtility.PackAtlases 生成数据
- 清除缓存哈希文件的具体实现
6. 使用代码生成图集的 Packed Texture 的集中说明 ,代替Pack Preview ( select the Pack Preview button under the Objects for Packing list to generate the packed Texture.)
- (全新图集不需要)获取图集关联的哈希值:调用接口SpriteAtlasExtensions.GetStoredHash获得图集的哈希值,此接口只能通用反射来调用
- (全新图集不需要)根据哈希值删掉AtlasCache 目录下对应的文件
- 设置图集为Dirty:EditorUtility.SetDirty(spriteAtlas); (不然不会执行生成流程)
- 再调用SpriteAtlasUtility.PackAtlases 生成数据
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|