Unity中UI和遊戲物體之間的層級渲染

2021-08-09 09:19:26 字數 1457 閱讀 1475

之前使用乙個uicamera和乙個maincamera做場景,希望給場景加上乙個background,但是將background和操作的ui都綁在uicamera,將遊戲物體正常地用maincamera渲染時,出現了遊戲物體遮擋住button或者background直接遮擋住了整個場景的情況。在不清楚camera的渲染方式的時候粗暴地去除了background,用skybox來帶替,作為遊戲背景。

現在我使用三個camera,分別為bgcamera,controlcamera,maincamera,目標是background最先渲染,然後是遊戲場景,最後是controlui。

而在在unity3d中的渲染順序如下:

不同camera的depth;

同camera下的layer。

1.同camera下的layer

在這裡,我建立了兩個canvas,分別用於儲存background和controlui,並將兩個canvas的camera都綁為這裡的同乙個camera。

然後設定兩個canvas的orderinlayer分別為-10和10,這樣的最終結果是:

background先渲染,button後渲染,button在background上。

2.不同camera的depth

這裡將bgcanvas綁在bgcamera上,controlcanvas綁在controlcamera上,cube則為遊戲物體。

設定camera的clearflags為depth only,分別設定bgcamera,controlcamera,maincamera的depth為-10,0,10。

可以得到bgcamera最先渲染,然後是maincamera,最後是controlcamera:

可以得到controlui始終在最上層,不會被物體遮擋,而只要將depth設定為-10,10,0,將得到以下效果:

由於物體是最後渲染,所以導致了button會被cube遮蓋住。

對粒子系統不甚了解,不過想來應該也是差不多的。

啟用與禁用遊戲物體 unity

unity啟用與禁用遊戲物體gameobject.activeinhierarchy 返回當前物體是否啟用gameobject.setactive true 將物體啟用gameobject.setactive false 將物體禁用 由於物體被禁用之後,就無法執行,所以先要用gameobject.f...

Unity中UI跟隨3D物體 即HUD效果

今天簡單的測試了unity中ui跟隨3d物體,使用unity版本 5.6.4。首先想到的有兩種思路 1 第一種方法基於recttransformutility.screenpointtoworldpointinrectangle和 camera.main.worldtoscreenpoint這兩個方...

Unity中物體尺寸獲取

1 gameobject.getcomponent meshrenderer 或 skinnedmeshrenderer bounds.size.x或者是,這種方式獲得是這個物體實際的大小尺寸,不需要再乘以自己或者父級的縮放比例 2 gameobject.getcomponent collider ...