问答 NGUI 与新版 Prefab 系统冲突问题

侑虎科技 · 2020年05月22日 · 813 次阅读

1)NGUI 与新版 Prefab 系统冲突问题
2)关于 HUD 的问题
3)RawImage 设置 DefaultHDR 格式的 RenderTexture 后颜色异常
4)Unity 如何烘焙透贴阴影做出真实影子
5)iOS 下打包 AssetBundle 出现错误


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 问答社区提供了回答


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问答社区提供了回答


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问答社区提供了回答


Rendering

Q:Unity 烘焙透贴阴影可以做真实影子吗?现在想烘出比较真实的阴影,考虑省内存的情况下不用混合和实时,只用烘焙光来做怎么做到比较真实的阴影?(接近一点也可以,不要太模糊)

A:对于常规方案来说,要想马儿不吃草,又想马儿跑得快是挺难的,各种方案总有取舍。
要是只说烘焙,常规的做法有:
1、提高 Lightmap 贴图尺寸,这个效果提升最直接,代价就是内存和包体。
2、调整烘焙参数,这块细节很多,可以参考这篇文章:http://ixulin.com/2017/05/03/talk-bake-in-unity/,讲得挺好的。调整得好,可以让视角中心位置的阴影效果质量较高,而整体 Lightmap 的占用较为合理。
3、关注下 Lightmap 的压缩方式,这块可能影响真机设备上的效果。

感谢贾伟昊@UWA问答社区提供了回答


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问答社区提供了回答


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在 UWA 问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之 “石”,也能攻你之 “玉”。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册