社区交流|Unity小技巧分享
今天将由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)!
推荐阅读
官方活动
8月15日晚,新一期的直播课程将介绍Unity 2018.1版本中正式推出的ProBuilder快速建模套件使用方法,帮助你快速掌握快速生成关卡用于游戏玩法的测试。[详情介绍...]
直播地址:
https://connect.unity.com/events/probuilder_level_design
8月Asset Store资源商店促销
8月期间,只需在Asset Store资源商店消费满50-255美元,即可获赠2-6款精品资源,最高消费250美元,更可附赠获得一件Asset Store定制款T恤!
活动地址:
https://assetstore.unity.com/g/august-promo-activation-demo
点击“阅读原文”访问Unity官方中文论坛