1)在TMP中计算书名号《》高度的问题
2)FMOD设置中关于Virtual Channel Count&Real Channel Count的参数疑问
3)Unity 2021.3.18f1 ParticleSystemTrailGeometryJob粒子拖尾系统崩溃
4)XLua打包Lua文件粒度问题
这是第375篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。
UI
Q:如下图所示,输入的文字中有书名号,但使用ContentSIzeFitter计算得到的高度是错误的(貌似它计算的比实际少,导致没换行):
而使用默认的Text就没这个问题(相同的字体):
请问如何在TMP中计算书名号《》的高度?
A:好像是对东亚语言有特殊处理,都会换行。不确定是不是这儿的原因,输入“你好”两字也是一样的效果,可以在这儿改改试试。
把这行注释掉就没问题了,但我不保证没其他问题,因为要把TMP的包导入项目里,源码会少算了换行第一个字符的长度,GeneratedMesh和PreferedHeight是分开算的,所以显示和高度计算不一样,GeneratedMesh是对的,这是Unity自己的Bug,后面几个版本修复了,估计还是得想办法升级TMP的版本。
参考文档:
Changelog | TextMeshPro | 3.2.0-pre.9
感谢萌呆瞎@UWA问答社区提供了回答
Audio
Q:FMOD的设置中,我发现有两个设置选项:Virtual Channel Count和Real Channel Count。想请教一下,一般游戏项目内这两个值要设置多少才合适?我发现外网有人都是拉满的,但这会造成CPU负担。只知道Real Channel Count这个不能太高。所以想了解下通常这俩参数设置多少比较合理。
下图来自外网论坛,Virtual Channel Count设置为512、Real Channel Count设置为128,而我的项目中这俩设置为128、32。
A:Real Channel,如果设置成32对于PC来说是正好。对于移动平台,32应该也能跑。对于超古老的机器,可以考虑设置成16。
Real Channel是同时播放的音频Channel数,如果同时播放的Channel超过这个数字,就会根据优先级把低优先级的音频停掉。实际项目中,极少同时播放如此之多的Channel。如果真发生了,请仔细优化音频播放逻辑。
感谢Zhang Ce@UWA问答社区提供了回答
Crash
Q:Unity 2021.3.18f1 ParticleSystemTrailGeometryJob粒子拖尾系统崩溃。
信息如下:
崩溃手机:Galaxy S24 Ultra
操作系统:Android14
崩溃堆栈:
Crashed: Thread: SIGSEGV 0x0000007d2f34a900
#00 pc 0xb30240 libunity.so (ParticleSystemTrailGeometryJob::ConfigurePerParticleTrailParams(ParticleLineParameters&, ParticleSystemParticles const*, unsigned long, ParticleSystemTrailGeometryJob const&, float)) (BuildId: c89a8ec16cd55b42b7a6c100718f0e187c531fc3)
#01 pc 0xb29b08 libunity.so (ParticleSystemTrailGeometryJob::ConfigurePerParticleTrailParams(ParticleLineParameters&, ParticleSystemParticles const*, unsigned long, ParticleSystemTrailGeometryJob const&, float)) (BuildId: c89a8ec16cd55b42b7a6c100718f0e187c531fc3)
#02 pc 0xb136b8 libunity.so (ParticleSystemGeometryJob::RenderJobCommon(ParticleSystemGeometryJob&, void*, void*)) (BuildId: c89a8ec16cd55b42b7a6c100718f0e187c531fc3)
#03 pc 0x5d084 libc.so (BuildId: 37f537c2ba9dcbb262a0a68f41a21da4)
针对以上问题,有经验的朋友欢迎转至社区交流分享:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技
Lua
Q:目前项目中使用XLua,Lua文件一般是每个Lua文件都打一个AssetBundle包,还是所有Lua都打一个AssetBundle包里?直观感觉上每个Lua都单独打一个AssetBundle包比较方便热更新。
A:如果Lua文件数量很多(十万级别),建议不要打Bundle,因为Bundle Header中要存储、反序列化的Asset信息过多,内存会吃不消,所以最好换成自定义的文件方式。参考星铁的Lua。
如果数量少,直接一个Bundle就足够。这样加载也方便:从一个固定的Bundle里Load Asset。
感谢James@UWA问答社区提供了回答
封面图来源于网络
今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。
UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com