1)在UI上制作动画的方案选择
2)AssetBundle依赖加载问题
3)TTF字体如何渲染未包含的字符
4)Unity 2020.3 使用HDRP渲染管线启动项目很卡
这是第278篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
Animation
Q:在UI上做动画是使用Animation还是Animator呢?或者有什么更好的方案吗?
A:之前专门对这个问题做过测试,在场景中用3种方法实现同样的动画。
复制10份和50份同样的动画,测试数据如下:
从耗时上看,Dotween是最优的,所以对于比较简单的动画,建议尽量使用Dotween来实现。
感谢Xuan@UWA问答社区提供了回答
AssetBundle
Q:关于AssetBundle依赖加载的问题,比如一个公共资源A,有很多(B、C、D、E…)Bundle都引用了A。理论上是先加载公共资源A,再加载(B、C、D、E…),但是在不同地方可能(B、C、D、E…)会同时加载,那么A是不是加载了很多次,这种情况是要如何处理呢?
A1:B、C、D、E准备加载A时,如果发现A已加载就跳过,加载中就追加一个回调,未加载才需要触发加载A。
感谢黄晓文@UWA问答社区提供了回答
A2:已经加载过的Bundle要记录下来:Dictionary<string,AssetBundle>,那么自然已经加载过的AssetBundle就不用再加载。
另外AssetBundle还要做引用计数,引用为0就Unload,不懂就看Addressable的源码。
感谢Jee@UWA问答社区提供了回答
A3:Unity的AssetBundle管理其实还是需要自己去手动做。如果一个AssetBundle被重复加载,那么引擎会直接报错。所以就像楼上说的,搞一个数据结构和容器通过引用计数去全程跟踪记录AssetBundle的加载及使用状况。
感谢黄程@UWA问答社区提供了回答
Font
Q:一些TTF字体,其中只包含了英文数字标点等有限的几百个字符,当我用这个字体显示中文的时候,可以显示,单并不是字体的风格,他是如何做到的?Fallback到其他系统默认字体吗?
A:可以阅读一下官方文档,有比较详细的说明:
https://docs.unity3d.com/Manual/class-Font.html“When Unity tries to render text with a dynamic font, but it cannot find the font (because Include Font Data was not selected, and the font is not installed on the user machine), or the font does not include the requested glyph (like when trying to render text in east Asian scripts using a latin font, or when using styled bold/italic text), then it will try each of the fonts listed in the Font Names field, to see if it can find a font matching the font name in the project (with font data included) or installed on the user machine which has the requested glyph. If none of the listed fallback fonts are present and have the requested glyph, Unity will fall back to a hard-coded global list of fallback fonts, which contains various international fonts commonly installed on the current runtime platform.”
中文版可以阅读一下这篇文章:《Unity font研究小结》
感谢贾伟昊@UWA问答社区提供了回答
Editor
Q:Unity 2020.3 使用HDRP渲染管线启动项目很卡。
1. 每次进入Play模式时,hold on时长特别久。
2. 大场景修改渲染时,hold on时长特别久。(即使关闭 Always Refresh)
3. 代码修改,Unity执行编译时长特别久。
希望解决过相关问题的大佬们能给点意见,感谢!
A:确认一下这个Debugger选项是否开启了,不确定这个会不会有影响。
感谢Xuan@UWA问答社区提供了回答
20211206
更多精彩问题等你回答~
封面图来源于网络
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)