哪个网站是动态,谷歌网站推广方案,武建安装公司新闻,宁夏电建网站3-9 蓝图的网络通讯、多人自定义事件、变量同步_哔哩哔哩_bilibili
目录
1.网络通讯
1.1玩家Pawn之间的同步
1.2事件同步 1.3UI同步
1.4组播
1.5变量同步 1.网络通讯
1.1玩家Pawn之间的同步
创建一个第三人称项目
将网络模式更改为监听服务器#xff0c;即将房主作为…3-9 蓝图的网络通讯、多人自定义事件、变量同步_哔哩哔哩_bilibili
目录
1.网络通讯
1.1玩家Pawn之间的同步
1.2事件同步 1.3UI同步
1.4组播
1.5变量同步 1.网络通讯
1.1玩家Pawn之间的同步
创建一个第三人称项目
将网络模式更改为监听服务器即将房主作为服务器使用。并且将玩家数量改为3。 3个玩家可以测试出客户端和服务端的关系客户端和客户端的关系所以至少需要一个服务端和两个客户端才能测试出所有情况。
打开第三人称模板自带的Charactor。
将复制运动和复制关掉发现服务端和两个客户端之间没有任何同步相当于三个独立的世界。 当把复制运动打开之后客户端之间可以同步客户端和服务端不能同步
当把复制和复制运动都打开之后可以实现客户端之间客户端与服务端之间的同步
1.2事件同步
在Charactor中添加一个发射火球的方法 会发现服务端发射火球可以同步到客户端上但是客户端发射火球无法同步。
这个时候需要让发射火球的事件在服务器上运行。
首先定义一个发射火球的事件并且将这个事件设置为在服务器上运行。 1.3UI同步 在游戏模式中添加UI时只会将UI添加到主机上、 在控制器中添加UI时会将UI添加到每一个玩家屏幕上, 但是直接添加UI会报下面的错误。 需要在创建UI时判断是否是本地玩家。 1.4组播
组播的方式是当这个方法被服务端调用的时候所有服务端和客户端都会执行这个方法。
案例按2让所有客户端和服务端都创建UI
运行游戏点击进入服务端的游戏窗口按2可实现在所有主机上创建UI的功能 组播只能由服务端发起客户端发起则依旧是本地的方法。
1.5变量同步
当一个服务端更改这个变量时所有的客户端和服务端中的这个变量也会同步更新。相反当客户端更改这个变量的时候只是在本地修改。
案例使用这个机制实现一个共享的团队剩余生命数。按1减少团队剩余生命数。类似于GTA5中的差事中的那个团队剩余生命
首先创建剩余生命的UI控件 创建一个Actor蓝图命名为记录员只存一个共享变量命名为当前团队剩余生命这个记录员只有一个方法扣除生命不需要复制因为变量是同步的当其中一个客户端更改这个变量后整个游戏中所有的主机都会同步这个变量。 同时将记录员的复制和复制运动打开 剩余生命UI中添加一个公开可编辑的变量命名为我的记录员并将记录员的当前团队剩余生命绑定到剩余生命条数。 将我们的记录员拖到场景中为了方便看到我给记录员添加了一个静态网格 实际开发中则并不需要。 打开角色蓝图定义创建控件的方法首先根据类获取场景中的记录员然后将记录员绑定到我们的UI组件中。虽然创建的剩余生命UI控件是每一个主机一个但是由于记录员只有一个所以所有的剩余生命UI中的剩余生命数会随着记录员中的剩余生命同步更新 在角色的开始事件后面调用上面绑定并显示UI的方法 按3的时候调用角色死亡事件角色死亡会找当场景中的记录员并更改记录员记录的剩余生命还记的变量同步的原理吗由于变量同步是从服务端同步到客户端所有只有在服务端更改这个记录员的剩余生命时所有主机的变量才能同步所以角色死亡事件需要设置在服务器上运行 至此三者可实现同步 总结 Pawn同步打开复制和复制运动 本地UI在本地的Pawn中调用和实现 全局UI在服务器上运行且通过Pawn的组播方法实现 全局UI的变量同步服务器添加全局唯一的记录员记录员拥有保存所有需要同步的变量记录员本身要复制且复制运动改同步变量的方法需要运行在服务器上。