天天看點

簡單嘗試UE5的WorldPartition前言0. 在項目設定中啟用WorldPartition1. 在WorldPartition視窗中加載網格2. Actor的“網格放置”選項3. 預覽網格單元4. 運作時的流加載

前言

在過去,建立大世界地圖主要是使用 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. 運作時的流加載