前言
在過去,建立大世界地圖主要是使用 WorldComposition,開發者手動将世界分割為子關卡,然後運作時由關卡流送系統來加載和解除安裝關卡。其中一個缺點是多個開發者可能在編輯同一個關卡時出現沖突。
而在UE5中,有了WorldPartition,不再需要建立子關卡了。同時與之配合的 一Actor一檔案(One File Per Actor) 也減少了開發者之間的編輯沖突。
本篇将對 WorldComposition 進行些簡單的嘗試。參考資源除了官方文檔外還有UE5 World Partition / Getting Started Tutorial - YouTube。
0. 在項目設定中啟用WorldPartition
當打開關卡的WorldSettings面闆時,可以看到Enable World Partition是灰色的。這也許說明目前并不支援單獨讓個别關卡啟用WorldPartition。
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 要想啟用WorldPartition,需要在項目設定中勾選:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 之後當新建立關卡時,就可以在WorldSettings面闆中看到啟用了WorldPartition。
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 1. 在WorldPartition視窗中加載網格
建立一個關卡:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 儲存關卡。
但是再次打開這個關卡時,會發現之前的地闆不見了:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 這是因為地闆所屬的網格并未被加載,是以地闆也沒被加載
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 打開WorldPartition視窗
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 可以選擇多個網格并右鍵加載他們。
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 加載後便可以再次看到地闆了:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 2. Actor的“網格放置”選項
每個Actor在detail面闆都可以設定自身的網格設定 :
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 三個選擇效果為:
設定 | 作用 |
邊界(Bounds) | 将Actor放置在所有與其邊界體積(bounds volume)相交的網格單元中。 |
位置(Location) | 将Actor放置在包含Actor中心點的網格單元中。 |
始終加載(Always Loaded) | 始終加載Actor。 |
預設是“Location”。
為了測試,現在将地闆改為“Always Loaded”,這樣不管怎麼樣都會被加載。
3. 預覽網格單元
目前的地闆相對于網格單元過小了。為了預覽可以将其縮放的XY都改為100。
在WorldSettings中,勾選Preview Grids可以預覽網格單元。
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 修改網格單元尺寸可以實時地看到劃分的變化:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 (注意:此處預覽的網格和WorldPartition視窗中加載的網格并不一樣,待後續研究)
4. 運作時的流加載
為了測試,在網格上放一些幾何體:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 點選Play運作後,在控制台輸入
wp.Runtime.ToggleDrawRuntimeHash2D
即可預覽網格的加載情況:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載 移動人物,可以看到遠處的圓錐所屬的網格在到達加載範圍後被加載:
簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載