UE4 difference between servertravel and openlevel(多人游戲的關卡切換)


多人游戲的關卡切換分為無縫和非無縫。非無縫切換時,客戶端將跟服務器斷開連接,然后重新連接到同一個服務器,服務器則加載一個新地圖。無縫切換不會發生這樣的情況。

有三個函數供我們使用:UEngine::BrowseUWorld::ServerTravel 和 APlayerController::ClientTravel。

1,UEngine::Browse

  非無縫切換,切換到目標地圖前將斷開跟客戶端的連接。

2,UWorld::ServerTravel

  只能在服務器調用,將服務器跳轉到新地圖,所有連接的客戶端會跟隨,服務器會為所有已連接的客戶端調用 APlayerController::ClientTravel。

3, APlayerController::ClientTravel

  在客戶端調用會轉移到新的服務器,如果從服務器調用,則使特定客戶端轉移到新地圖。

使用無縫切換:通過UGameMapsSettings::TransitionMap配置一個過渡地圖, AGameMode::bUseSeamlessTravel設置為true。

藍圖中的openlevel,實際上調用的是ClientTravel,這會中斷所有連接,使用命令行調用servertravel不會中斷這些連接,例如:servertravel /Game/Maps/Level01.

這里發現UE4的一個Bug,在PIE運行游戲時調用servertravel會沒有效果,在打包后的游戲中運行一切正常。


免責聲明!

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



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