? 自拍偷拍一区二区三区四区,亚洲第一区欧美国产综合
聯(lián)系我們

給我們留言

聯(lián)系我們

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

郵箱:info@narkii.com

電話:0595-82682267

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

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

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

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

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

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

213313bd22ppfxegdidez1

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

213321jib8y2yceck21yz2

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

213310d5bk710uk1qodt1x

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

213317o3o8ooyjwojsj3jj

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

213324j4cehezuieppaxew

UnloadStreamLevel節(jié)點

213325lfkzk0pfkksoiipz

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


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

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

關(guān)閉

全部評論:0條

推薦
熱門