Unity Q&A 第3期 :聊聊Unity 2018的LWRP和混合光照
Unity技术支持工程师陈嘉栋每周都会总结出,过去一周在Unity官方社区交流群中比较有代表性的问题。今天我们将分享第3期的社区Unity Q&A,内容涵盖:Tilemap、图形、UGUI、 着色器、 Timeline、光照等多个方面,其中会着重介绍一下Unity 2018的LWRP和混合光照。
Unity Q&A 系列回顾:
编辑器
问题01:在Unity 2018.2中新建项目,创建一个新脚本,打开就提示如下图错误提示,如何解决?
回答:Unity 2018中创建新项目不再支持Visual Studio 2015,请使用最新版本的Visual Studio 2017。
此外,你可以使用Visual Studio Code,这是一个更快更轻,更适合Unity的脚本编辑器。
Assetsbundle
问题02:从SVN上更新下来的同一个工程,出现了不同的电脑打出来的AssetBundle大部分文件的MD5和Unity的HASH值都不一样的情况,如何解决?
回答:查看是否有漏上传Meta文件,如果有漏了上传.meta文件,然后其他人员更新下来时,由于没有原来的Meta文件,Unity自动在本地生成,使得不同人员从SVN更新下来的生成了各自的Meta文件。
Meta文件是Unity记录GUID的,不一样的Meta,在AssetBundle中计算MD5会出现问题。
Tilemap
问题03:在绘制Tilemap的时候,在场景中有一块Tile无法填充完整一个场景中的单位块,如何解决?
回答:首先检查 Sprite的Pixels Per Unit属性,如果切割的尺寸一块是64*64,该属性被设置成了100就会出现这样的问题,修改设置为64即可。
另外,还可查看Tilemap组件的Scale属性是否为1,该设置也有可能会导致Tile和场景中单位块不匹配。
图形
问题04:下图中的反射怎么改它的范围?
回答:这是由于不正确的采样造成的问题。如果你使用的是反射探针,那么针对室内或小范围内的场景反射要勾选上Box Projection。
因为对应同一个反射探针,不同位置的物体应该具有不同的反射效果。一般的Cubemap比较适合于模拟室外大场景物体的反射,室内小范围如果用Cubemap可能会出现错误。
UGUI
问题05:UGUI字体在Unity编辑器中正常显示,但是打包后在PC端运行就无法显示,如下图所示,如何解决?
回答:这是因为缺少Unity内置的UI部分的Shader,下载了后包含到Graphics里面就可以解决。
资源
问题06:打包的时候疯狂的输出“INVALID ALPHA DATA",如何解决?
回答:这比较像PVRTexTool的报错。Unity会调用PVRTexTool 的命令行工具压缩贴图,因此我们可以将报错文件的范围缩小到贴图资源。可以排查一下是否有Pvrtc格式的压缩纹理,看看Etc2_x的纹理格式,对工程中的纹理做一个排除法。
相关问题的讨论可以参考Imgtec社区的内容:
https://forums.imgtec.com/t/pvrtextoolcli-bug-encoding-etc2-rgb-a1-etc2-rgb-a1-ubn-srgb/2365
Profiler
问题07:在Windows上查看Unity的Profiler,其中“Total System Memory Usage ”一直无限增长,这正常吗?
回答:这个值是利用了Windows 上的PROCESS_MEMORY_COUNTERS_EX来获取的。你可以查看项目中Reserved Total这些有没有持续增长。如果都在增长,就必须进行优化。
App
问题08:我想做一个加载的窗口,加载完了再显示游戏内容。不过希望加载的窗口没有边框。现在调用Win32 API去设置,总是会看到先有一个有边框的窗口,然后迅速跳转到没边框的窗口,如何解决。
回答:可以调用SetWindowLong,代码如下图所示:
如果还存在跳转情况,可以考虑在程序启动参数加Popupwindow。
问题09:Android打包时出现“Unable to Convert classes into dex format”的报错,如何解决?
回答:这通常是由插件导致的。可以在项目中检查一下是否有重复的jar,如果有重复的则删除掉。 如果不想一个一个查找,也可以考虑删除项目的“Plugins”文件夹,然后重新导入所有插件。
着色器
问题10:使用Unity 2017.4,在Shader中使用“UsePass”引用同一个Shader的另外一个SubShader的Pass会导致崩溃,如何解决?
回答:UsePass主要是用来实现不同的Shader中的代码复用的,所以不要使用UsePass引用同一个Shader中的Pass。
Timeline
问题11:为什么Timeline中调用的位置运行后播放会发生偏移呢?
回答:模型上的Animator组件是否有Controller?你可以把Animator上的Controller去掉,完全由Timeline控制动作。因为在运行阶段它的动画是增量影响上层的,在编辑阶段又是覆盖上层数据,所以可能会不一样。
光照
问题12:下图是默认管线的光照探头,可以看到动态物体进入阴影范围变暗了。
下图是轻量级渲染管线LWRP的效果,烘焙后光照探头的阴影不会对动态物体产生任何影响。
烘焙模式是Mix Subtractive,光照一个Mixed模式的Directionallight,那么轻量级渲染管线LWRP的Subtractive烘焙模式,是否会使光照探头忽略阴影的影响?
回答:这不是光照探头的原因,而是目前轻量级渲染管线LWRP对混合光照的支持还不完善。对混合光照更多的支持还在开发中。使用轻量级渲染管线LWRP,如果不使用Mixed,只使用烘培光照,光照可以正确的作用于动态物体的。
下图是传统渲染流水线和LWRP在光照模式这项功能上的对比。
完整对比内容请参考文档Pipeline Feature Comparison:
https://docs.google.com/document/d/1MgoycUhS9xQKXxbTy1yHt7OCByI10rds3TyRBCSlFmg/edit
小结
以上就是过去一周Unity官方社区交流群中比较有代表性的问题,其中有你关注的问题吗?如果你也希望与Unity的技术工程师交流,欢迎加入Unity官方社区交流群:629212643 或访问Unity官方中文论坛(Unitychina.cn)!
精品推荐
活动信息
Unity视觉艺术专题论坛报名开启 (最后3天报名)
9月11日,Unity将参与由中央美术学院、中国文化娱乐行业协会联合举办首届游戏艺术大展,并举办Unity视觉艺术专题论坛,邀请所有对技术与艺术游戏及视觉艺术感兴趣的人员参与本次活动。[了解详情...]
Unity for Small Things有奖用户问卷调查
可在即时通讯程序中开发交互式广告和游戏的工具Unity for Small Things正在封闭内测阶段。为了让该工具更满足用户的需求,Unity将进行有奖用户需求调查。参与调查的用户中,我们将选取20名幸运参与者,赠送Unity精美小礼品一份!
调查时间:截至到9月16日 17:00
调查问卷:http://unity2018.mikecrm.com/co22fqP
Asset Store资源商店开学季促销 (最后3天促销)
截止到9月11日Asset Store 资源商店将推出50余款热卖资源,进行高达75折的优惠促销,帮助开发者提升开发效率!
促销时间:截至到9月11日
促销地址:https://assetstore.unity.com/g/on-sale-this-week-summer-2018
Unity与Humble Bundle限时优惠Humble Unity Bundle
开发者可以通过购买Humble Unity Bundle,在获得Made with Unity的精品游戏,同时也能够获得Asset Store资源商店的多个精品资源。本次限时优惠促销的部分款项将用于支持慈善机构。[了解详情...]
购买地址:
https://www.humblebundle.com/games/unity-bundle
点击“阅读原文”访问Unity官方技术论坛