小游戏的Spine数量过多开销大
- 作者:admin
- /
- 时间:一小时前
- /
- 浏览:10 次
- /
- 分类:厚积薄发
1)小游戏的Spine数量过多开销大,怎么办
2)关于在AssetBundle中同时看到SpriteAtlas图集纹理和小图是否合理
这是第469篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。
UWA社区主页:community.uwa4d.com
UWA QQ群:793972859
From 问答社区
Q1:我们小游戏上Spine耗时有点高,平均每帧耗时8.04ms,该怎么优化?


A:从函数调用次数来看,每帧有200多次调用,这个数量级下单个Spine的开销其实已经相对较低了。其中还看到SkeletonAnimation.FixedUpdate会有3~4ms的开销,理论上进入FixedUpdate后会直接Return,但由于调用数量太高(物理调用次数最大17,导致SkeletonAnimation.FixedUpdate的调用次数达到3000+),还是把这里的开销堆上去了。可以考虑禁用Skeleton Animation组件,专门写一个Manager主动触发Spine的Update和LateUpdate,应该能减少大量Spine对象导致跨语言调用开销。
Q2:是不是要重写一个Skeleton Animation组件呢?
A:在Manager里面注册Skeleton Animation到List里面,统一把SkeletonAnimation.enabled=false就好,然后用Manager统一调用Update和LateUpdate,不用重写Skeleton Animation。
Q3:是在Manager里面的Update直接getComponent到Skeleton Animation点出Update执行吗?
A:最好一开始就注册到某个List
里面,动态维护这个List,在Update里面遍历这个数组,每个成员都执行Update。
欢迎大家转至社区交流:
https://answer.uwa4d.com/question/69c9ec21abed2e338a7dac6d
From 问答社区
Q:有个打AssetBundle的情况想咨询下, 我们把一个Unity SpriteAtlas图集打成一个包,这个包里理论上应该只有合并后的图集一个资源, 现在用AssetStudio解包看除了图集还有单个散图,是正常的吗,会不会导致运行时同时加载出来图集和小图而冗余?
A:下图是只打了一个SpriteAtlas图集的AssetBundle在AssetStudio中看到的情况。AssetBundle打包了sactx的Texture2D大图的同时,也打包了很多Sprite;只要看到小图的Type不是Texture2D,就是正常的。
Assets:
- Assets/CommonAssets/AssetBundle Test/Texture_common/SpriteAtlas/TestAtlas.spriteatlasv2
Dependencies: []运行时还是仅加载一张大图,然后找到其中小图所在的UV位置和长宽,就渲染出来了。
欢迎大家转至社区交流:
https://answer.uwa4d.com/question/69c9e6feabed2e338a7dac6c
无论是社区里开发者们的互助讨论,还是AI基于知识沉淀的快速反馈,核心都是为了让每一个技术难题都有解、每一次踩坑都有回响。本期分享分别来自UWA AI问答和UWA问答社区,希望这些从真实开发场景中提炼的经验,能直接帮你解决当下的技术卡点,也让你在遇到同类问题时,能更高效地找到破局方向。
封面图来源于网络
今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859


