Unreal4 入門(關卡動態加載)


 

    對於大型游戲MMORPG游戲或是3D街景(虛擬現實)還有大型無縫地圖都需要地圖啊,關卡動態加載的機制來達到讓用戶感覺自己一直是在漫游,而不會出現Loading(讀條),卡界面等情況。當然除非是垮區域無法依靠關卡和關卡中之間的關系做處理。
 
     UnrealEngine4 作為一個多年處於世界前矛的商業引擎,自然而然也為大家考慮到這個這種硬性需求。UnrealEngine4 中的動態加載大概分為3種。
 
     首先需要明確下幾點概念。因為再同學們信息會等的前提下才會更有利於理解和相互交流。好了,不瞎扯了進入正題。
 
     1.地圖(Map):地圖這個概念在UnrealEngine4中基本上所示虛擬出來。當然我們編譯完一個場景后會保存到自己的工程目錄下 如:XXXX\Content\Maps\  保存的文件名叫做.umap。一個工程下可以有很多很多.umap文件,但是我們需要注意到,我們在單獨保存場景時編輯器都是基於Level操作的。代碼中只有一個函數是關於地圖[UEngine::LoadMap]。  如下圖:
 
Unreal4 <wbr>入門(關卡動態加載)
 
    2.關卡(Level):關卡這個概念應該是在UnrealEngine4最常用使用的,在UE4編輯器中還有一個單獨Levels編輯器。  如下圖:
 
Unreal4 <wbr>入門(關卡動態加載)
 
 
    3.世界(World):World這個概念之前在UnrealEngine3中一直跟地圖的概念差不多,World下面會有很多的Levels還有八叉樹場景管理器,以及一些尋路啊,對Level和Actor的管理函數。當然現在也差不多,不過沒有看見八叉樹,多了一種LevelActor的類,SpawnActor中創建對象為"ConstructObject"之前創建對象另一個函數需要Outer和Owner的"DuplicationObject"。
 
 
言回正傳:UnrealEngine4引擎提了我們有三種動態加載的方法,下面一一介紹。
 
一. 通過使用LevelStreamingVolume的方法:
 
    通過Modes窗口下的Volumes找到LevelStreamingVolume,拖動到編輯器中讓它覆蓋住同學們兩個Level,調節LevelStreamingVolume的StreamingUsage屬性(比如有加載后鎖定,加載,加載后顯示等)。
    當我們的Pawn進入到這個LevelStreamingVolume后關卡就會對應的加載啦。  如圖:
 
Unreal4 <wbr>入門(關卡動態加載)
 
 加載類型設置屬性圖例
 
Unreal4 <wbr>入門(關卡動態加載)

二. 通過使用BluePrint的方法:
 
    通過打開關卡的Blueprints使用藍圖完成動態加載。那么在Blueprints中完成動態加載我們需要用到幾個節點分別為 LoadStreamLevel和UnloadStreamLevel。 如圖:
 
LoadStreamLevel節點
Unreal4 <wbr>入門(關卡動態加載)
UnloadStreamLevel節點
Unreal4 <wbr>入門(關卡動態加載)
    
    特別要注意的是LoadStreamLevel節點需要在MakeVisibleAfterLoad打勾,不然不會顯示的呦。第二個暴露變量ShouldBlockonLoad打上勾會,不會被UnloadStreamLevel節點卸載(同學們自行按照需求選擇呦)。還有一定要在Leves編輯器中把修改動態加載方法中的[ 總是加載]改成[ 藍圖]喔,不然通過Blueprints無法控制動態加載的。
 
 
三. 通過寫代碼的方式加載
 
    在需要切換動態加載關卡的時候,調用[UGameplayStatics::LoadStreamLevel]函數來加載想要使用的關卡。
    大概流程是創建一個FStreamLevelAction,這個Action回去讀暴露參數的包遍歷所有Level關系找到指定關卡,然后ActivateLevel這個關卡激活的時候會有加載或者卸載關卡。
 
PS:
    這幾天一直在回憶之前使用UnrealEngine4學過的知識,也同時在看UnrealEngine4的新代碼,如果出現概念混淆的情況或者敘述錯誤的情況,請各位同學指出並與我交流 Unreal4 <wbr>入門(關卡動態加載)。  有機會請你們吃飯,喝咖啡。


免責聲明!

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



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