UE4联网6——UI同步

先看一下之前GameMode里的任务完成方法。

最下面的那个是蓝图实现方法在单机版本中是在GameMode蓝图中显示UI

 

在多人游戏中只有服务端会显示UI

如下是使用专用服务器开的两个客户端(中间都没有显示UI),但是一个进入通关区域内的玩家视野变了,这符合上面PC的设置视野目标逻辑。

 

如果一个玩家使用监听服务器,另一个玩家使用客户端呢?如下用客户端进入通关区域的时候

客户端的视野变了,服务端的视野没变,服务端显示了UI客户端没显示。

 

显示UI的逻辑是写在GameMode蓝图里的首先

调用GM→CompleteMission(xx,xx)

只能在服务器执行而且多播函数里没有让客户端显示UI的逻辑。客户端自然不会UI了。其次视角转换使用了PlayerController,PlayerController 在客户端端和服务器都存在。所以使用变更在服务器调用是成功的。当服务器中存在两名玩家会有两个玩家控制器,每个客户端只有当前一个玩家控制器。

 

UI加载在多人游戏的时候不应该写在GameMode里面。

使用专用服务器测试的时候会有如下错误。

Blueprint Runtime Error: "Accessed None trying to read property CallFunc_Create_ReturnValue". Blueprint:  BP_GameMode Function:  Execute Ubergraph BP Game Mode Graph:  EventGraph Node:  Add to Viewport

 

UI加载在多人游戏的时候应该写在玩家的PlayerController里面。

在创建自己的playerControllerC++类基于Gameplayer框架的playerController。

在头文件里声明蓝图实现事件函数。

 

在多播中调用这个函数

 

去掉原来gameMode中的蓝图实现函数

 

 

启动编辑器删了原来BP_GameMode里的蓝图实现函数的实现,把逻辑放入

继承自己C++的playercontroller类的蓝图类(BP_PlayerController)。

 

在BP_GameMode里把默认的playerController设置成BP_PlayerController

 

现在UI同步了也不会报错误了

 

但是视角还不同步

因为在GameMode中逻辑只是设置进入区域者的视角

 

上面这段代码只会在服务器运行只需要把服务器上所有的playerController的视角都改了就行了

 

现在UI视角都同步了

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值