GameMode、PlayerController、GameInstance 的作用
透過ProjectTB的選單和戰鬥結構看到虛幻框架
該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。
隨著您的虛幻專案的發展,您可以輕鬆開始在 GameMode、PlayerController 和 GameInstance 中隨機添加功能。 ProjectTB重新組織了各個類別的職責,將主選單和戰鬥分開。
GameMode是目前世界的規則
TBMainMenuGameMode負責主菜單流程,TBGameMode負責遠徵和戰鬥規則。 一種遊戲模式不會接管所有選單、角色選擇和戰鬥。
MainMenu World
TBMainMenuGameMode
TBMainMenuPlayerController
TBMainMenuWidget
Battle World
TBGameMode
TBPlayerController
TBExpeditionHUDWidget
遊戲模式是在世界變化時創建的。 因此,最好包含世界規則,例如當前戰鬥的輸贏、部署限制和敵人創建。
PlayerController 是玩家的輸入和意圖
PlayerController 連結玩家向世界發出的命令,例如滑鼠點擊、選擇和攝影機輸入。 在ProjectTB中,左鍵盟友選擇和敵人懸停訊息是分開的,戰鬥目標指定也是分開的。
與其在按下 UI 按鈕時將所有邏輯放入小部件中,不如向 Controller 或 GameMode 的驗證函數發送請求更安全。
遊戲實例在世界之間生存
即使您移動地圖,GameInstance 也會保留。 擁有比世界壽命更長的物件是件好事,例如從主選單中選擇的活動資訊或全域子系統。
然而,如果你把所有的全域變數都放到GameInstance中,它就變成了一個巨大的管理器類別。 UI 和儲存等獨立職責是UGameInstanceSubsystem可以分開。
選擇類別的標準並不是一個方便的方法。 您需要決定資料應該存在於哪個世界、誰應該驗證規則以及誰將擁有輸入。