Use*_*ude 3 c# unity-game-engine
好的,基本上我有一个世界空间画布(当前使用不同的相机)和一个屏幕空间画布。在屏幕空间画布中,我有来自平面上资产存储的模糊材质,该材质仅适用于屏幕空间。
我需要做一个切换,我仍然有模糊的背景和返回的按钮,但在顶部我有我的世界空间画布(下面的“文本”对象):
在第二个相机上将清除标志设置为 none 可以让我看到第一个相机看到的内容,但看不到它的画布。这里最好的选择是屏幕捕获第一个相机的画布吗?
或者有没有办法不让屏幕空间画布遮挡世界空间?
所以,如果我理解正确的话,你有 2 个摄像头,可以这么说:
MainCamera:用于显示 3D 内容ScreenSpaceCamera:仅显示该屏幕空间“平面”。您想要的是:始终在 ScreenSpace 内容之上显示 3D 内容,对吗?
所以你可以做的是创建一个特殊的图层ScreenSpace,例如
MainCamera-> Camera:Depth= 0(较高的值意味着绘制在顶部)ClearFlags=DepthOnlyCullingMask=除了 ScreenSpaceScreenSpaceCamera-> Camera:Depth= -1(因此它绘制在深度级别 0 后面)ClearFlags=什么都没有(或者你想要的任何东西)CullingMask=仅 ScreenSpace正如您现在所看到的,3D 内容(红色图像)始终绘制在屏幕空间(白色)之上。
注意:如果您希望能够打开Screenspace和关闭它,您需要一个额外的相机来真正清除图像!正如你在Camera Preview相机的缓冲区没有“清除”(因为我们是这么告诉的)。
因此,如果您要禁用Screenspace您将获得在预览框中看到的内容!-> 不好^^
我只需添加第三个相机,例如BackgroundCamera作为MainCamera(因此它会自动正确移动)的子级并给它
Depth= -2(所以在屏幕空间后面)ClearFlags= 例如SkyBoxCullingMask=什么都没有(所以你实际上只在这里渲染背景)如果您有更复杂的想法,例如
ScreenSpaceCamera。因此,如果您禁用模糊画布,它们会正常显示,否则会模糊。只需使用 4 个摄像机、深度和不同层扩展该示例即可。