GamePLay框架之GameMode
在打游戲時,游戲中會有很多的模式,在做游戲時也要考慮不同的游戲模式。如吃雞游戲中,有在游戲進行時的模式,也有游戲大廳的模式;在CF中有團戰模式、個人競技模式、爆破模式等。GameMode就是指這些模式,可以認為每個GameMode就是一種我們創建的模式。
在特定的游戲模式下,比如我們自己創建的我們的BP_MyGameMode下會有六個方面的屬性來設置,分別如下:
Pawn Class:英語翻譯為棋子,就是在游戲中的對象。在游戲中,我們會操控一個游戲對象,通過對象來觸發事件的發生。比如在吃雞游戲中,一個Pawn就是一個人物模型,注意,本類就是定義人物模型及其屬性,但是操控本對象,比如射擊、拋雷、開車等行為的定義,並不是在本類中完成。在創建Pawn類時可直接繼承Pawn父類。
HUD Class: 在這里會創建一個UI管理器,在這個管理器中還會去管理其他UI。比如在吃雞游戲中,在大廳中,商城的顯示等;正常情況下,UI的創建就是在這里。
Player Controller Class:在Pawn中,創建了對象模型,在吃雞游戲中就是一個人物對象。那么操控人物對象,比如進行射擊、跑步等動作,是在Controller Class中完成。也就是,Controller是玩家控制器,控制游戲對象進行動作和操作。在創建Controller時可選擇繼承自character和pawn父類。當controller定義的操控行為有很多復雜屬性,比如射擊、運動等,則會繼承自character父類;如果是塔防游戲,操控人物相對簡單,為了輕便化,則會繼承自pawn父類。
Game State Class: 游戲的狀態類,比如本局游戲的得分、戰場剩余人數等。
Player State Class: 游戲中對象的狀態類,比如人物的剩余HP,擊殺數,被殺數等。
Spectator Class:游戲中觀戰者類,比如在吃雞游戲中的上帝視角就是本類對象創建和操控。
在GameMode之外,還有一個GameInstance,這是一個全局的單例,這個單例會在游戲項目開始運行時創建,直到游戲結束時銷毀,可以用作記錄游戲中的狀態值。
以CF的團隊競技威力,在每次團隊競技開始時,游戲中各個屬性的參數值都會被初始化到最初狀態,這在游戲中是自動完成的,但是有時,我們需要將上局游戲結束時人物的狀態作為下局游戲開始時的狀態,那么該怎么解決呢? 方法一:可以將人物的狀態記錄到GameInstance中; 方法二:可以每次游戲結束時將狀態推送到服務器上,在游戲開始時從服務器上讀取狀態。