1)NGUI与新版Prefab系统冲突问题
2)关于HUD的问题
3)RawImage设置DefaultHDR格式的RenderTexture后颜色异常
4)Unity如何烘焙透贴阴影做出真实影子
5)iOS下打包AssetBundle出现错误
这是第187篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
NGUI
Q:Unity 2018.4.0,NGUI的预设物点击inspector中“Open Prefab”报错。
A:我们的项目升级完成后也遇到了这个问题,据说是因为NGUI的部分代码与新的Prefab工作流不兼容,产生的原因没有深究过。
对于这种不能在Prefab Mode中编辑的Prefab,如果想修改,我们的做法是在场景中生成Prefab的实例,然后断开Prefab关系,改好之后再覆盖回原来的Prefab。
感谢BingLau@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5de0d4fe14ec712eefaf0226
Rendering
Q:请问如何让角色头顶名字(HUD)既能与场景中物体有正确遮挡关系,又不受场景后效的影响?
我尝试过两个方案:
1、使用两个相机,第一个相机渲染场景并附带后处理,第二个相机专门渲染HUD,并将Clear Flag 设置为 Don’t Clear。但是iOS平台开启MSAA后,第一个相机的depthBuffer就频繁出错。判断跟MSAA的Resolve有关,但不知道如何解决。
2、单个相机渲染,然后使用Stencil来区分是否处理后效。但是Stencil在blit之后就没法正常使用了。(尝试过钱康来的https://www.qiankanglai.me/2015/03/07/unity-posteffect-stencil/在OnPostRender()中进行SetRenderTarget(),编辑器上正常,但到iPhone上就不行)
A:关于在后处理之后用CommandBuffer绘制HUD,我想到:
用DrawMesh(DrawRenderer不能用于Canvas Renderer)绘制,那么就要手动从后往前排序(这些HUD是半透明的)一个个绘制,并且在C#中手动计算位置Matrix。并根据场景中HUD出现和消失的情况、前后顺序的变化,频繁修改CommandBuffer去Drawmesh。不知道是否有更好的方法。
感谢题主秦威@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5dc432f914ec712eefaf0179
Shader
Q:查看FrameDebugger发现,RenderTexture进入UI/Default Shader之前还是对的,经过这个Shader处理后颜色就异常了。
具体效果如下图所示:
本人对Shader不熟,请问大家知道是什么原因导致的吗?
A:正常情况赋给RawImage的贴图,其Alpha值只为0或1,RenderTexture则是已经对Alpha值已经进行了处理。
UI/Default Shader的Blend默认为SrcAlpha OneMinusSrcAlpha,对于RenderTexture相当于多乘了一次Alpha值,改为One Zero就会正常。
感谢题主于翔@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5dea4dc373f93355f9667ed0
Rendering
Q:Unity烘焙透贴阴影可以做真实影子吗?现在想烘出比较真实的阴影,考虑省内存的情况下不用混合和实时,只用烘焙光来做怎么做到比较真实的阴影?(接近一点也可以,不要太模糊)
A:对于常规方案来说,要想马儿不吃草,又想马儿跑得快是挺难的,各种方案总有取舍。
要是只说烘焙,常规的做法有:
1、提高Lightmap贴图尺寸,这个效果提升最直接,代价就是内存和包体。
2、调整烘焙参数,这块细节很多,可以参考这篇文章:http://ixulin.com/2017/05/03/talk-bake-in-unity/,讲得挺好的。调整得好,可以让视角中心位置的阴影效果质量较高,而整体Lightmap的占用较为合理。
3、关注下Lightmap的压缩方式,这块可能影响真机设备上的效果。
感谢贾伟昊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5d9f240af4053b206c80f87c
Build
Q:打包iOS下的AssetBundle的时候,出现错误。提示:
Moving file failed
Moving Temp/unitystream.unity3d to /Users/jufeng/Desktop/jufeng/trunk/src/Client/Game3D/Platform_ab/IOS/AssetBundles/effectcommon/water_fall: No such file or directory
求助,怎么解决这个呢?同样的资源在Android平台没问题。(版本:Unity 2018.3.8f1)
A:自己测试了,是因为对应的AssetBundle里面包含了dds格式的图片(美术提交时没注意)。这个在Android打就没问题,在iOS就报错了。把dds的改成了png就没问题了。
感谢题主逃逸速度@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5dedb6ed73f93355f9667ed2
封面图来源于网络
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)
网友评论