1)如何定位Unity死循环导致的齐全卡死
2)如何设定Unity AssetBundle单个包大小
3)MaterialPropertyBlock批改Stencil相干参数
4)线性空间中动作文件管制材质球色彩失真问题
5)DrawMeshInstancedIndirect在华为手机上生效


这是第240篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Script

Q:运行游戏时,在某些特定的状况下,Unity会忽然卡死,看工作控制器里的Unity过程内存会继续飙升到很高的值。

因为目前游戏工程曾经很大了,并且脚本泛滥(Lua+C#),呈现这种状况时又没有异样日志,断点也断不到地位,也不晓得是哪里呈现的死循环异样了,这个问题卡了很久,没思路了,求解。

A1:经网友真木提醒了这篇文章:https://www.cnblogs.com/lijiajia/p/10817407.html

通过debug.sethook这个函数来注册一个Hook的Handler,把每一行或者每个函数的调用都打印进去,就能晓得死循环的地位了。这种办法可用于找Lua的死循环,如果是C#的死循环,须要其它办法。

感激题主loy_liu@UWA问答社区提供了答复

A2:如果是C#的死循环,能够应用VS附加Unity调试,暂停整个游戏,而后切换到主线程,看看主线程以后运行到了哪一句。

感激西元前的史莱姆@UWA问答社区提供了答复

AssetBundle

Q:Unity AssetBundle单个包大小多少比拟适合?

A1:以前LZMA格局时,是倡议小于1MB的,当初曾经没有这个束缚了。因为LoadFromFile+LZ4的加载速度曾经十分快了。所以,文件大小更倡议从热更新的角度登程,尽可能不要给热更新产生大麻烦即可。

该问答由UWA提供

A2:楼上说得对,读取速度曾经不是问题,不要太小也不必太大,集体感觉1-10MB间差不多都能够,我集体是以应用的汇集性把每个包管制在几MB左右。

感激徐军@UWA问答社区提供了答复

Material

Q:我在原生的Sprite-default Shader中退出了Stencil的相干设置,在编辑器状态下用MaterialPropertyBlock批改Stencil的Comp和Ref,在Inspector面板中该值曾经被批改,然而在Frame Debugger中并未失效批改值,还是未修改前的设置,是不能用MaterialPropertyBlock改Stencil的相干参数吗?

A:可参考以下信息:

感激羽飞@UWA问答社区提供了答复

Rendering

Q:线性空间中动作文件管制材质球色彩失真问题。
以下是间接设置材质球的色彩显示:

以下是通过Animator动作文件设置材质球的色彩显示:

为什么不同呢?材质球是[HDR] Color有问题。(版本:Unity 2019.4.9f)

A:在线性空间中,写入到MaterialPropertyBlock的渲染色彩参数,在渲染时会转换到Gamma空间,即变成2.2次幂。

用动画批改材质的色彩,其实是向MaterialPropertyBlock中配置参数。所以在应用K材质球设计动画时,须要把色彩值的0.4545次幂写入到曲线中。

感激张首峰@UWA问答社区提供了答复

Rendering

Q:Unity 2018.4.24的DrawMeshInstancedIndirect在华为手机上生效是为什么?我应用Testin的华为手机进行测试DrawMeshInstancedIndirect接口,试过的都是不行的,然而我用其余的手机就都能够。有遇到同样问题吗?

A1:贴上具体日志看看,而后把华为手机的设施信息贴上,最初问下是不是带麒麟CPU的华为机。

感激Robot.Huang@UWA问答社区提供了答复

A2:因为驱动程序问题,对于仅具备OpenGL ES 3.0的Adreno GPU的Android设施禁用了GPU实例反对。

Graphics: GPU Instancing: Added support for Android with OpenGL ES 3.0 or newer. Note however that GPU instancing support is disabled for Android devices that have the Adreno GPU with only OpenGL ES 3.0, because of driver issues.

能够应用SystemInfo.supportsInstancing检测机器是否反对GPU Instancing,最保险的形式就是OpenGL ES 3.1及以上反对。

感激郑骁@UWA问答社区提供了答复

A3:最初发现是华为Mali不反对SSBO的起因。

感激题主halm@UWA问答社区提供了答复

封面图来源于网络


明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官网技术QQ群:793972859(原群已满员)