天系統:客戶端發消息到服務器端,服務器端把收到的消息廣播到所有客戶端。
由於聊天對象需要支持“可復制”和每個客戶端都發給一個,所以GameInstance、GameModeGameState都不適合存放用來做聊天系統。
一、PlayerController可以為聊天系統,只不過稍微有點復雜
二、PlayerState,比較適合做聊天系統。創建一個繼承自PlayerState的子類,然后關卡中設置:
使用get Player State獲得PlayerState對象,並使用Cast to 轉換成自定義的Player State對象,就可以使用自定義Player State對象的屬性和方法了。
三、Pawn/Character,可以作為聊天系統,但是如果控制的角色死亡了,轉移到觀察者角色就無法進行聊天了,除非每個觀察者角色也重復實現一套聊天系統。
知識點:
1.客戶端發消息到服務器端,服務器端把收到的消息廣播到所有客戶端。
2.使用Set Keyboard Focus來讓聊天輸入框獲得鍵盤輸入焦點
設計UserWidget的時候,可以給UserWidget添加輸入參數:Instance Editable和Expose On Spawn這2個選項加上,這樣在調用Create UserWidget函數的時候就會把這個變量作為參數輸入:
如果Create Widget沒有把輸入參數顯示出來,可以在Class中重新選擇一下Chat Message就可以了。
使用函數Is Dedicated Server判斷當前執行的是否是專用服務器端,並且在專用服務器上不用創建UI,因為專用服務器本就是沒有游戲界面的。
設置鼠標是否可見和設置游戲輸入模式是要通過獲得Player Controller對象中調用