[UE4]一分钟实现聊天系统

时间:2022-09-09 21:19:14

 

天系统:客户端发消息到服务器端,服务器端把收到的消息广播到所有客户端。

[UE4]一分钟实现聊天系统

由于聊天对象需要支持“可复制”和每个客户端都发给一个,所以GameInstance、GameModeGameState都不适合存放用来做聊天系统。

一、PlayerController可以为聊天系统,只不过稍微有点复杂

二、PlayerState,比较适合做聊天系统。创建一个继承自PlayerState的子类,然后关卡中设置:

[UE4]一分钟实现聊天系统

 [UE4]一分钟实现聊天系统

使用get Player State获得PlayerState对象,并使用Cast to 转换成自定义的Player State对象,就可以使用自定义Player State对象的属性和方法了。

三、Pawn/Character,可以作为聊天系统,但是如果控制的角色死亡了,转移到观察者角色就无法进行聊天了,除非每个观察者角色也重复实现一套聊天系统。

 

知识点:

1.客户端发消息到服务器端,服务器端把收到的消息广播到所有客户端。

[UE4]一分钟实现聊天系统

2.使用Set Keyboard Focus来让聊天输入框获得键盘输入焦点

 [UE4]一分钟实现聊天系统

[UE4]一分钟实现聊天系统

 

 [UE4]一分钟实现聊天系统

 

[UE4]一分钟实现聊天系统

设计UserWidget的时候,可以给UserWidget添加输入参数:Instance Editable和Expose On Spawn这2个选项加上,这样在调用Create UserWidget函数的时候就会把这个变量作为参数输入:

[UE4]一分钟实现聊天系统

 如果Create Widget没有把输入参数显示出来,可以在Class中重新选择一下Chat Message就可以了。

 

[UE4]一分钟实现聊天系统

使用函数Is Dedicated Server判断当前执行的是否是专用服务器端,并且在专用服务器上不用创建UI,因为专用服务器本就是没有游戏界面的。

 

[UE4]一分钟实现聊天系统

设置鼠标是否可见和设置游戏输入模式是要通过获得Player Controller对象中调用