在这段代码中获取gm的时候服务器是能获取到的客户端得到的是空的因为gamemode只存在于服务器。
所以客户端就不能调用角色的禁用输入和在屏幕上显示UI了。
但是服务器上运行的这条代码在客户端上也运行了,这条代码属于后台运行
所以我们要在客户端上调用上面的这个方法要怎么办呢?复制?可是客户端上根本就获取不到GameMode这个类实例。
想要复制GameMode要用到UE4Gameplay架构中的的GameState这个类
在编辑器中创建基于GameStateBase的C++类。
GameState就相当于一个小容器里面装的是服务器GameMode中需要复制的东西。然后创建网络组播(多播)的方式复制给每个客户端。
如下:下面的函数在服务器上被调用后会发送信息给客户端然后客户端会在本地调用该函数。
感觉是不是很像之前使用的ReplicatedUsing标签绑定的OnRep函数呢
方法的实现有点像之前调用服务器方法
需要在方法名后面加上_Implememtation
禁用原来GM中的pawn→disableInput方法
在gm类中服务器调用然后多播到各个客户端。
要get服务器上的GS需要在GM中设置GS
记得加上头文件
现在客户端也能使用禁用输入的逻辑了。