? 韩国VS日本中国VS美国产一区 ,99热成人精品热久久669
聯(lián)系我們

給我們留言

聯(lián)系我們

地址:福建省晉江市青陽(yáng)街道洪山路國(guó)際工業(yè)設(shè)計(jì)園納金網(wǎng)

郵箱:info@narkii.com

電話:0595-82682267

(周一到周五, 周六周日休息)

當(dāng)前位置:主頁(yè) > 3D教程 > 圖文教程

虛幻4的關(guān)卡動(dòng)態(tài)加載機(jī)制

來(lái)源: 52vr | 責(zé)任編輯:傳說(shuō)的落葉 | 發(fā)布時(shí)間: 2019-06-18 09:57 | 瀏覽量:
  對(duì)于大型游戲MMORPG游戲或是3D街景(虛擬現(xiàn)實(shí))還有大型無(wú)縫地圖都需要地圖啊,關(guān)卡動(dòng)態(tài)加載的機(jī)制來(lái)達(dá)到讓用戶感覺(jué)自己一直是在漫游,而不會(huì)出現(xiàn)Loading(讀條),卡界面等情況。當(dāng)然除非是垮區(qū)域無(wú)法依靠關(guān)卡和關(guān)卡中之間的關(guān)系做處理。

虛幻4的關(guān)卡動(dòng)態(tài)加載機(jī)制

     UnrealEngine4 作為一個(gè)多年處于世界前矛的商業(yè)引擎,自然而然也為大家考慮到這個(gè)這種硬性需求。UnrealEngine4 中的動(dòng)態(tài)加載大概分為3種。
 
     首先需要明確下幾點(diǎn)概念。因?yàn)樵偻瑢W(xué)們信息會(huì)等的前提下才會(huì)更有利于理解和相互交流。好了,不瞎扯了進(jìn)入正題。
 
     1.地圖(Map):地圖這個(gè)概念在UnrealEngine4中基本上所示虛擬出來(lái)。當(dāng)然我們編譯完一個(gè)場(chǎng)景后會(huì)保存到自己的工程目錄下 如:XXXX\Content\Maps\  保存的文件名叫做.umap。一個(gè)工程下可以有很多很多.umap文件,但是我們需要注意到,我們?cè)趩为?dú)保存場(chǎng)景時(shí)編輯器都是基于Level操作的。代碼中只有一個(gè)函數(shù)是關(guān)于地圖[UEngine::LoadMap]。  如下圖:
 

213313bd22ppfxegdidez1

 
    2.關(guān)卡(Level):關(guān)卡這個(gè)概念應(yīng)該是在UnrealEngine4最常用使用的,在UE4編輯器中還有一個(gè)單獨(dú)Levels編輯器。  如下圖:
 

213321jib8y2yceck21yz2

 
 
    3.世界(World):World這個(gè)概念之前在UnrealEngine3中一直跟地圖的概念差不多,World下面會(huì)有很多的Levels還有八叉樹場(chǎng)景管理器,以及一些尋路啊,對(duì)Level和Actor的管理函數(shù)。當(dāng)然現(xiàn)在也差不多,不過(guò)沒(méi)有看見八叉樹,多了一種LevelActor的類,SpawnActor中創(chuàng)建對(duì)象為"ConstructObject"之前創(chuàng)建對(duì)象另一個(gè)函數(shù)需要Outer和Owner的"DuplicationObject"。
 
 
言回正傳:UnrealEngine4引擎提了我們有三種動(dòng)態(tài)加載的方法,下面一一介紹。
 
一. 通過(guò)使用LevelStreamingVolume的方法:
 
    通過(guò)Modes窗口下的Volumes找到LevelStreamingVolume,拖動(dòng)到編輯器中讓它覆蓋住同學(xué)們兩個(gè)Level,調(diào)節(jié)LevelStreamingVolume的StreamingUsage屬性(比如有加載后鎖定,加載,加載后顯示等)。
    當(dāng)我們的Pawn進(jìn)入到這個(gè)LevelStreamingVolume后關(guān)卡就會(huì)對(duì)應(yīng)的加載啦。  如圖:
 

213310d5bk710uk1qodt1x

 
 加載類型設(shè)置屬性圖例
 

213317o3o8ooyjwojsj3jj

二. 通過(guò)使用BluePrint的方法:
 
    通過(guò)打開關(guān)卡的Blueprints使用藍(lán)圖完成動(dòng)態(tài)加載。那么在Blueprints中完成動(dòng)態(tài)加載我們需要用到幾個(gè)節(jié)點(diǎn)分別為 LoadStreamLevel和UnloadStreamLevel。 如圖:
 
LoadStreamLevel節(jié)點(diǎn)

213324j4cehezuieppaxew

UnloadStreamLevel節(jié)點(diǎn)

213325lfkzk0pfkksoiipz

    
    特別要注意的是LoadStreamLevel節(jié)點(diǎn)需要在MakeVisibleAfterLoad打勾,不然不會(huì)顯示的呦。第二個(gè)暴露變量ShouldBlockonLoad打上勾會(huì),不會(huì)被UnloadStreamLevel節(jié)點(diǎn)卸載(同學(xué)們自行按照需求選擇呦)。還有一定要在Leves編輯器中把修改動(dòng)態(tài)加載方法中的[總是加載]改成[藍(lán)圖]喔,不然通過(guò)Blueprints無(wú)法控制動(dòng)態(tài)加載的。
 
 
三. 通過(guò)寫代碼的方式加載
 
    在需要切換動(dòng)態(tài)加載關(guān)卡的時(shí)候,調(diào)用[UGameplayStatics::LoadStreamLevel]函數(shù)來(lái)加載想要使用的關(guān)卡。
    大概流程是創(chuàng)建一個(gè)FStreamLevelAction,這個(gè)Action回去讀暴露參數(shù)的包遍歷所有Level關(guān)系找到指定關(guān)卡,然后ActivateLevel這個(gè)關(guān)卡激活的時(shí)候會(huì)有加載或者卸載關(guān)卡。


相關(guān)文章
網(wǎng)友評(píng)論

您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)

關(guān)閉

全部評(píng)論:0條

推薦
熱門