1)Unity如何间接获取深度缓冲
2)Unity Editor下SpriteAtlas加载的问题
3)无奈将GameObject从Project窗口拖拽到SceneView窗口
4)UGUI的事件响应问题
5)iOS设置Texture2D的mipMapBias有效


这是第247篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Rendering

Q:查阅了一些材料,发现Unity获取深度纹理如同都要对每个物体再渲染一次,有什么方法能间接获取到深度缓冲省去这一轮渲染吗?或者间接复制深度缓冲。

A:能够,次要步骤如下:
1.将相机的色彩和深度Buffer通过Camera.SetTargetBuffers从新指向新的RT上(ColorBufferRT、DepthBufferRT);

2.通过CommandBuffer加一个AfterForwardOpaque的事件,将ColorBufferRT、DepthBufferRT Blit渲染到两张新的RT上(前面渲染能够间接应用);

3.通过CommandBuffer加一个AfterEverything的事件,BlitColorBufferRT到CameraTarget上(保障屏幕正确)。

具体细节可参考:https://blog.csdn.net/linjf52...

感激范世青@UWA问答社区提供了答复

Texture

Q:应用的版本是Unity 2018.3.6f1下,Unity Editor模式下编辑Prefab,图片会加载到内存中。导致一开始运行游戏的时候会触发相干图集SpriteAtlasManager.atlasRequested的提前调用,导致图集加载谬误。

上图是过早的图集加载,失败时检测到内存中加载的图片。有没有方法在运行游戏的时候革除编辑预制体时内存中的图片图集?或者相似的方法?

补充:在不运行游戏的状况下调用内存查看的接口,发现内存中依然有很多图片被加载:

A:这个问题实质是,当援用到Atlas的Sprite加载时,如果内存中没有Atlas,就会触发加载图集的“申请”(atlasRequested)。Editor下编辑Prefab,会生成这个申请,在游戏运行的第一帧,这个申请函数会被调用,而这个申请是由Native层收回的([RequiredByNativeCode]),所以咱们没有方法管制,跟卸载内存中的资源是没有关系的。

这个申请也只会在运行时的第一帧进行调用,所以,不要在第一帧注册atlasRequested事件,在第一帧之后,或者在须要加载相应Prefab时注册该函数,就能够防止在启动游戏时调用该函数。

感激Prin@UWA问答社区提供了答复

Editor

Q:最近发现Unity在关上公司的我的项目中,无奈实现Project窗口拖拽GameObject到SceneView窗口,然而新建一个洁净的工程是能够拖拽过来的。猜想是不是因为某个工具或者插件引起的,然而插件和工具太多,一一排查会比拟浪费时间,想问问大佬们有没有遇见过相似的问题?应用的Unity版本是2019.4。

失常的我的项目从Project窗口拖拽GameObject到SceneView窗口,图标是这样的:

出问题的是这样的:

目前曾经正文掉内部工具或者插件的SceneView.duringSceneGui 、DragAndDrop相干代码,问题仍然存在。

A:呈现问题的起因是:咱们重写了GameObject的Editor,没有实现OnSceneDrag函数,不实现这个函数就会导致无奈将物体从ProjectWindow拖拽到SceneView。

感激题主马三小伙儿@UWA问答社区提供了答复

UGUI

Q:UGUI RayCast的无绘制点击在PC上没有问题,然而到安卓手机上就穿透了,没有点击响应的问题。之前用通明通道为0的Image就都没问题。

脚本如下:

A:能够把Image的半透明度设置为0,勾选Canvas Renderer上的Cull Transparent Mesh,这样就能够不进行绘制也能响应点击事件的。(另外,测试了了题主的代码,在小米9上没有呈现问题。)

感激Xuan@UWA问答社区提供了答复

Texture

Q:应用TextureMipmapStreaming,在iOS真机上,设置Texture2D的mipMapBias有效,这个Texture是从Material中拿到的mainTexture,在Editor下反而失效(图片会变含糊和清晰)。

版本是Unity2018.4.13,有人遇到同样的问题吗?相干设置见下图:

A:这个要开启Texture.streamingTextureDiscardUnusedMips = true,不然在内存估算足够的状况下,是不会抛弃高精度的贴图的。

感激梅辰@UWA问答社区提供了答复

封面图起源:Multipass Translucency
https://lab.uwa4d.com/lab/5b5...


明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官网技术QQ群:793972859(原群已满员)