Unity-遮擋剔除和場景加載
在運(yùn)行時(shí),無論打開了多少個(gè)場景,Unity 一次僅加載一個(gè)遮擋剔除數(shù)據(jù)資源。因此,必須根據(jù)計(jì)劃是一次加載一個(gè)場景還是一次加載多個(gè)場景,從而以不同方式準(zhǔn)備遮擋剔除數(shù)據(jù)。
一次加載一個(gè)場景
如果使用?LoadSceneMode.Single?一次加載一個(gè)場景,則必須分別按以下方式烘焙每個(gè)場景的遮擋剔除數(shù)據(jù):
在 Unity Editor 中,打開需要烘焙遮擋剔除數(shù)據(jù)的單個(gè)場景。
烘焙場景的數(shù)據(jù)。Unity 會(huì)生成數(shù)據(jù)并將保存為?Assets/[場景名稱]/OcclusionCullingData.asset。Unity 會(huì)將對(duì)此資源的引用添加到打開的場景中。
保存場景。 3.對(duì)每個(gè)場景重復(fù)步驟 1、2 和 3。
在運(yùn)行時(shí),按以下方式加載場景:
1.將場景加載為項(xiàng)目的默認(rèn)場景,或者使用 LoadSceneMode.Single 來加載場景。如果有活動(dòng)場景,則 Unity 會(huì)卸載活動(dòng)場景以及活動(dòng)場景的遮擋數(shù)據(jù)資源(如果有)。Unity 隨后加載您的場景及其遮擋數(shù)據(jù)資源。
一次加載多個(gè)場景
如果使用?LoadSceneMode.Additive?一次加載多個(gè)場景,則必須按以下方式一起烘焙這些場景的數(shù)據(jù):
在 Unity Editor 中,打開 Unity 將在運(yùn)行時(shí)加載的場景組的第一個(gè)場景。該場景將變?yōu)榛顒?dòng)場景。
以累加方式打開組中的其他場景,使所有這些場景同時(shí)在 Unity Editor 中打開。
烘焙所有場景的數(shù)據(jù)。Unity 會(huì)生成所有打開的場景的數(shù)據(jù),并將其保存為?Assets/[活動(dòng)場景名稱]/OcclusionCullingData.asset。Unity 會(huì)將對(duì)此資源的引用添加到所有打開的場景中。
保存場景。
在運(yùn)行時(shí),按以下方式加載場景:
加載場景組的第一個(gè)場景作為項(xiàng)目的默認(rèn)場景,或使用?
LoadSceneMode.Single
?來加載場景。如果有活動(dòng)場景,則 Unity 會(huì)卸載活動(dòng)場景以及活動(dòng)場景的遮擋數(shù)據(jù)資源(如果有)。Unity 隨后加載您的場景以及共享的遮擋數(shù)據(jù)資源。根據(jù)需要,使用?
LoadSceneMode.Additive
?加載其他場景。如果 Unity 發(fā)現(xiàn)以累加方式加載的場景的遮擋數(shù)據(jù)與活動(dòng)場景的遮擋數(shù)據(jù)相同,則遮擋剔除將按預(yù)期工作。
請注意,共享的遮擋數(shù)據(jù)資源的文件較大。使用較大的遮擋數(shù)據(jù)資源不會(huì)在運(yùn)行時(shí)對(duì) CPU 產(chǎn)生任何其他影響。