Notifications
Article
社区交流|Unity小技巧分享
Published 9 months ago
324
0
今天将由Unity技术支持工程师陈嘉栋分享,过去一周Unity官方社区交流群中比较有代表性的几个问题。同时欢迎大家加入Unity官方社区交流群:629212643,交流与分享经验。

编辑器

问题一: 可以通过Script修改Scene View的Shading Mode吗?

答案:

可以。你需要修改UnityEditor.SceneView.lastActiveSceneView.renderMode,选择想要的Shading Mode即可,其中RenderMode是一个DrawCameraMode类型的枚举。
关于DrawCameraMode,请参考文档:
https://docs.unity3d.com/ScriptReference/DrawCameraMode.html

问题二: 在Unity编辑器右上角的Stats,可以查看当前场景的一些性能数据指标,这些数据可以通过脚本来获取吗?

答案:

这里的数据是可以通过C#脚本来获取,在UnityEditor命名空间中有一个UnityStats类。里面包括了这些数据。
需要注意:由于UnityStats类定义在UnityEditor命名空间内,所以只能在Editor中访问。

性能

问题三: 开发反馈内存占用过高,造成了闪退。排除了Unity Profiler能够统计到的一些资源的问题,最有可能就是DLL和三方插件的问题,有办法进行内存统计吗?

答案:

不同平台需要不同的工具来进行分析。在iOS上需要用到Xcode和Instrument来分析。安卓则需要Android studio或者Adb的一些指令来分析。
请参考内存优化文档:https://unity3d.com/cn/learn/tutorials/topics/best-practices/android-memory-management
闪退的可能性有很多,需要测试"内存占用高”是PSS高还是单纯的Mono高。可以收集下Crash可以确定很多问题。例如:Crash的机型内存是多少的。
打包模式和项目实现方案也可能会对内存产生影响,例如下列情况:
  • C#代码为主使用il2cpp打包,那么很可能代码片段的内存就有几十兆。
  • 场景和批使用静态和批方案,Scenemem当中的Mesh就有几十兆。
  • 内存泄漏,可能会导致Mono会持续增长上百兆。

光照贴图

问题四: 如果只有一个光照并且开启了Shadowmask来烘焙场景,生成的Shadowmask都是4个通道的贴图,比较浪费,有什么优化的方法?

答案:

可以将Texture type设置为Single channel,在Unity 2018中可以选择保留的Channel,选择Red即可,这样就生成了r8格式的Texture,内存开销会变成之前的1/4。

Git

问题五: 使用Git管理Unity版本的时候是如何处理二进制文件的?目前Git提供的LFS功能是否能满足实际需要呢?

答案:

关于Git lfs和Unity工程里的大文件的处理请参考:
https://www.reddit.com/r/gamedev/comments/6mc1az/%20lets_talk_about_unity_git_best_practices_and/
Gitlab应该也是有这套api的。适合Unity使用的.gitattributes文件,请参考:
https://gist.github.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f
我们可以再配合Unity的Smart merge,效果会比较好。设置步骤请参考:
https://robots.thoughtbot.com/how-to-git-with-unity

资源管理

问题六: 工程打包后,包里会有一些后缀为resS的文件。请问这个文件的内容是什么?

答案:

resS后缀的文件主要是Texture的二进制数据。如果是和场景有关的resS文件,例如:level0.resS,一般是由于在Lighting窗口中设置了Skybox Material。

Shader Graph着色器视图

问题七:Shader Graph着色器视图面板跟着鼠标移动并且甩不掉,是Bug吗?

答案:

这是一个Bug,已经在Unity 2018.2.0b9版本中修复了。

小结

以上就是过去一周Unity官方社区交流群中比较有代表性的问题,其中有你关注的问题吗?如果你也希望与Unity的技术工程师交流,欢迎加入Unity官方社区交流群:629212643 或访问Unity官方中文论坛(Unitychina.cn)!

Unity China
547
Comments