天系统:客户端发消息到服务器端,服务器端把收到的消息广播到所有客户端。
由于聊天对象需要支持“可复制”和每个客户端都发给一个,所以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对象中调用