在其所属的客户端上运行

在同步UMG的时候遇到的问题,反而解决了一个一直以来的疑问----在其所属的客户端上运行服务器

在其所属的客户端上运行

在拥有这个变量的Actor中执行spa

例子

去修改Widget中的Text,咱们已经让Text显示在屏幕上了,并绑定了Text这个变量.net

两人游戏中,NewPlayerController一共有三个,服务器上两个,客户端一个(解释点击跳转),而服务器上的是没有必要去渲染UI的,因此咱们要在本地的NewPlayerController中去渲染UI。blog

NewPlayerController蓝图节点

在本地的NewPlayerController中建立Widget游戏

PS:能够这么认为服务器的NewPlayerController便是本地,是权威的,由于服务器上的NewPlayerController就存在服务器里,并且只有一个事件

GameMode蓝图节点

储存服务器上的两个PlayerController(两个权威版的PlayerController)get

NewPlayerController蓝图节点

按下“Q”去呼叫GameMode的事件同步

GameMode蓝图节点

历遍全部的PlayerController,转化为咱们两个NewPlayerController,这里须要注意两点变量

  • 有关于服务器的NewPlayerController,由于服务器只有一个NewPlayerController,因此转化没有问题。
  • 有关于客户端的NewPlayerController,由于客户端有两个NewPlayerController,因此转化可能会出现问题

一般来讲,这样已经能够更新Widget的Text这个变量了。可是由于咱们的Widget都是在本地建立的,因此客户端的权威版/服务器上的NewPlayerController是没有建立Widget,这样运行不但不会获得预期的效果,并且还会报错,因此咱们得修改一下Update这个事件。渲染

update事件改成在其所属的客户端上运行 

意思就是哪一个NewPlayerController拥有Widget这个变量,就转换为哪一个NewPlayerController。很明显,客户端的只有本地的NewPlayerController才有Widget这个变量,因此就转换为本地的NewPlayerController,并修改了Widget的Text变量。

相关文章
相关标签/搜索