kirin77 发表于 2022-6-21 16:24

Unity3d框架篇(10):新版图集方案(静态)

本系列基于:BDFramework 、Unity3D 2018.4.0
BDFramework:Simple! Easy! Beautiful! This is a powerful Unity3d game workflow!
框架地址:
GayHub:yimengfan/BDFramework.Core,
码云 :yimengfan/BDFramework.Core,欢迎赏星。
第九艺术 、第十艺术讨论群 : 606667651
Tips:这一篇干货不多,嫌墨迹的,看完API介绍,不用BD后面就不用看了噢~

Unity 2018.4中,我们建议使用SpriteAtlas作为图集方案:



先说说优势,我太爱这个东西了:

本质上来说,这个新版本的SA方案,是一个Editor环境下,制作过程中的“动态图集”为何?
回想下我们以前TP时代的图集:
先需要手动把多张图打成一张图集,如果发生突击调整,都需要重新拖上去,或者自己写工具映射。这种方案导致制作过程中,很麻烦,又要兼顾效率,又要花费大量精力去维护图集引用关系。
新版本的SA方案,很简单:
你制作过程中可以是零散的图片,最后再打图集,而且调整图集也是需要调整碎图的目录。这就很方便了。最后,只需要用BResources.load加载具体的散图片,prefab引用图集也不用处理,BD内部给你处理好了图集的索引关系。
不需要再去关心图集部分的具体操作。
使用:

这个东西很简单,只需要你整理好目录,按目录打图集就行


而且这个在Editor下Play模式就生效:



打图集前



打图集后

AssetBundle下需要API调用,返回具体Sprite即可:


大部分百度搜的SpriteAtlasManager回调,其实不用注册的,单用这个就可以了。
事实上,如果想集成这一套系统,还是比较麻烦的,因为你得写一套自己加载系统,因为你得知道你所有得资源是否在图集中。
然后返回加载,而利用BD本来的加载规则,想做到这一点其实很简单。

BDFramework的工作流操作规范:

按照BD的目录要求,事实上,我们所有的静态图(不需要通过手动API调用加载),都在这个目录下:



这个不是Resources,所以不会被打包带进目录

那么实际上,我们操作就很简单了。
首先,该图集是以文件夹为单位的,当你拖选文件夹到Atlas上后,
1.在Runtime下建立图集的文件夹,
子目录:模块 +版本号


图集名:用img/模块/图集文件


2.一个图集文件上,只打一份图集,不然会导致Assetbundle包体过大



3.图集格式尽量选择为:RGBA ASTC 6x6,能不能用8x8 具体看美术效果如何~
2018.4.2 版本中Tight Packing选项会导致 图集Rect出错,原因未知



6.当前界面资源,drawcall,需要使用者把握, 如果大量图片跨图集,建议复制一份图片给自己模块单独使用

7.Editor环境下,图集效果会在Play模式下生效。
建议关闭BDFrame后,在play模式下对自己界面进行,按节点开关测试当前Batch

unityloverz 发表于 2022-6-21 16:31

加载倒是没问题了,不知道要不要管图集的卸载,最担心是图集都留内存而不卸载

johnsoncodehk 发表于 2022-6-21 16:36

要啊
页: [1]
查看完整版本: Unity3d框架篇(10):新版图集方案(静态)