我们将从日常技术交流中精选若干个开发相关的问题,建议阅读时间15分钟,认真读完必有收获。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。
制作
Q:Unity 5.5.4f1,设备华为Honor v10,安卓8.0,横屏游戏拉起竖屏支付后,切换回来游戏分辨率错误,屏幕上一半是黑屏 ,但是NGUI点击位置又是正常的位置(和渲染出来的位置不同,是正常的点击位置)
A:我们是Unity 4.x版本遇到了这个问题,也是出现在Android 8.0,我们看日志,发现是外部对横竖屏进行了修改。尝试在C#层设置分辨率无解。最后我们修改了Unity的UnityPlayerNativeActivity文件,在Android层对进行了分辨率的重新设置,暂时还未发现引起其他坑。
该问题来自UWA问答社区,感谢赵林提供了回答如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/5a5da1082e34cb42a0a4e832
资源管理
A:前段时间我做SLua白名单裁剪的时候遇到类似的问题。我理解有以下几个部分:
link.xml指定的不会被裁剪(不过文档说支持通配符,我没试出来)
出包时依赖的资源(就是Editor.log里那部分)会被自动分析
PreserveAttribute标记
最麻烦的地方在于打包进AssetBundle的资源:打进AssetBundle的资源里有Animator Controller,但是外面的Resources里等都没有;所以默认情况下AC对应的类就被裁剪了,然而运行时候需要所以崩溃。
解决这个可以自己分析YAML,参考:https://docs.unity3d.com/Manual/ClassIDReference.html
PS:其实AC是最玄学的一个东西,这个对应的类我至今还没有摸索透… 我们现在是在Resources下放一个空的AC来规避了。
该问题来自UWA问答社区,感谢钱康来提供了回答,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/5a66b3bdfa29ca4c81f3d1d6
制作
Q:我想问下游戏中捏脸的一些具体实现方式。我网上搜索过,资料很少,只搜到过天刀的一篇和介绍Honey Select的一篇,但是看完后仍然有些无从下手的感觉,想知道有没有相关的开源代码可以参考的?
A:你说的应该是逍遥剑客这篇:https://zhuanlan.zhihu.com/p/28471808
其实HoneySelect压根没加密,直接UnityStudio+dnSpy就可以拆了。
感谢钱康来提供了以上回答
A:入职之后第一个的系统就是捏脸,当时当然没有康来这么丰富的游戏经验,所以参考的基本是公司内部的资料,大部分功能都是在《Honey Select》中有了,总结一下:
1. 基于骨骼调整。调整骨骼的Scale、Rotation,Position相对用得少,这个在康来提到的博客中写得非常详细了,就不多聊了;
2. 基于Mesh差值。这部分是前面缺失没有提到的部分,在某些骨骼数量有限制或者骨骼不能做得特别好的情况下,会制作两个最大和最小极值的mesh,根据差值计算中间的mesh值,然后在运行时生成最终显示的mesh,和调整骨骼的区别有点类似于骨骼动画和网格动画。
3. 基于材质。在网格不修改的情况下,材质的变化用于肤色、瞳孔颜色、唇色、纹身图案等等,都可以通过材质中的贴图或者参数更改来改变。(UV的变化可以做到纹身颜色的自定义等等)
4. 新的Mesh。这部分在《Honey Select》中也有讲到,也是对于程序来说最为简单,对美术来说工作量最大的部分,用于发型、时装、多余的饰品挂件等等。
至于搜索的关键字,可以考虑:character customization之类的。
额外提下,捏脸的系统要保证运行时效率的同时,预览的速度也要做保证,有时候这两者会有一些冲突,可以通过多方案支持、内存换效率之类的方式来进行优化。如果是手游,最好关注下极限情况下的渲染效率和内存消耗,毕竟如果有材质参数的修改是无法合批的,基于骨骼或者mesh的修改的话对于内存也有一定的额外消耗。
感谢贾伟昊提供了以上回答
该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/5a6a95d5cd437d6b816b7ef5
渲染
Q:下图是我们的UWA性能测评报告,其中看到Graphics.Blit的开销还不小,不知道这个是什么用的,能否关掉?
A:相机上的HDR是默认勾选的,去掉这个勾选就没有了,在那个位置的Graphics.Blit一般都不是通过脚本添加的相机后处理造成的,而是引擎自身开启的后处理导致,比如HDR或者AA等。
该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。
https://answer.uwa4d.com/question/5a5ebb95f308236c196c1e97
领取专属 10元无门槛券
私享最新 技术干货