社区交流|Unity小技巧分享

android studio 教程 | 2018-08-13 07:27

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

答案:可以。你需要修改UnityEditor.SceneView.lastActiveSceneView.renderMode,选择想要的Shading Mode即可,其中RenderMode是一个DrawCameraMode类型的枚举。

关于DrawCameraMode,请参考文档:

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

答案: 这里的数据是可以通过C#脚本来获取,在UnityEditor命名空间中有一个UnityStats类。里面包括了这些数据。

需要注意:由于UnityStats类定义在UnityEditor命名空间内,所以只能在Editor中访问。

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

答案: 不同平台需要不同的工具来进行分析。在iOS上需要用到Xcode和Instrument来分析。安卓则需要Android studio或者Adb的一些指令来分析。

请参考内存优化文档:-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管理Unity版本的时候是如何处理二进制文件的?目前Git提供的LFS功能是否能满足实际需要呢?

%20lets_talk_about_unity_git_best_practices_and/

Gitlab应该也是有这套api的。适合Unity使用的.gitattributes文件,请参考:

我们可以再配合Unity的Smart merge,效果会比较好。设置步骤请参考:

资源管理

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

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

Shader Graph着色器视图

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

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

推荐阅读

官方活动

8月15日晚,新一期的直播课程将介绍Unity 2018.1版本中正式推出的ProBuilder快速建模套件使用方法,帮助你快速掌握快速生成关卡用于游戏玩法的测试。[]

直播地址:

8月Asset Store资源商店促销

8月期间,只需在Asset Store资源商店消费满50-255美元,即可获赠2-6款精品资源,最高消费250美元,更可附赠获得一件Asset Store定制款T恤!

活动地址: