關於Camera Culling Mask


如需轉載,請保留本文鏈接。

參考文章鏈接:https://www.cnblogs.com/88999660/archive/2013/03/14/2959439.html

Unity版本:2017.1.0f

需求:人物死亡時,VR頭盔黑屏,3秒后黑屏變淡,要能看到之前的游戲環境,黑屏完全消失后可繼續游戲。

做法:使用unity的UGUI,利用不同相機的渲染層級不同,UI相機專門用來渲染黑屏動畫。

重要提示:當cullingMask為Nothing時,值是0。 當cullingMask設置為everything時,值是-1。這時如果有層要關閉,就減去這個層的值。 比如第8層的值是 256。那關閉第8層后的值是 -257[-1-(1<<9)] 因為設置everything時的數值比較特別,和算法沒關系。——摘自上文鏈接。

1.Canvas設置為:Camera模式,且在其下創建一個UI渲染使用相機,深度為1.(主相機默認深度為-1,欲在主相機前渲染,深度需大於主相機深度)

2.相機Clear Flags設置為:Skybox,Culling Mask設置為:UI,或者除了環境默認的Default之外的Mixed均可,如下圖。

3.利用動畫的播放時間進行判斷,當播放完成一半時,渲染層級改為Everything,此時可以看到環境,代碼如下:

public Camera camera;
    public Animator ani;
    public GameObject Canvas;
    private void Awake()
    {
    }
    private void Update()
    {
        if (ani !=null )
        {
            if (ani.GetCurrentAnimatorStateInfo(0).normalizedTime >= 0.5f)
            {
                camera.cullingMask = -1;
                Debug.Log("渲染層:" + camera.cullingMask);
            }
            if (ani.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1)
            {
                Canvas.SetActive(false);
            }
        }
        
    }

效果如下:分別為未播放狀態——剛剛開始播放動畫狀態——動畫播放一半狀態——結束動畫播放狀態

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM