UE4 多人局域网—— 不同的pawn 分配不一样的颜色

**

不同的pawn 分配不一样的颜色

**

在多人局域网架构中, 一种比较常见的 应用要求是: 每一个pawn 个体 采用不同的颜色或者不同的 name 进行区别划分。
我们对官方自带的框架进行解析之后,发现 : 官方案例中, 在GameMode 中存储每一个生成的pawn 对应的颜色。 同时通过 Gamemode 分配给每一个 PlayerController , 然后通过Player congtroller 生成pawn ,同时将color 传递给每一个pawn 。
在pawn 蓝图中 , 首先 调用 server 端函数 + 广播函数。 实现 所有拥有此pawn 的 变更颜色。

以上逻辑稍显绕, 按照我们以前常规的逻辑。我们习惯:
在Gamemode 中 调用 postlogin 函数, 直接 在里面进行 pawn的生成。 为了将逻辑更加清晰明了, 我们采用自己的模式。

1, GameMode 中 ,Postlogin 实现对pawn 的逻辑生成。
2,GameMode 中,存储所有生成pawn 对应的color.
3, pawn 蓝图中, 首先 调用server 函数 ,再调用广播函数, 对actor 的 颜色进行变更。

蓝图逻辑关键图如下:

在这里插入图片描述
ps: listen server 自身也是一个client, 所以只是单独启动一个窗口的时候, postlogin 也会检测到一个角色 也就是自身。
此处我们 做了一个限制, 当检测到两个的时候, 我们才做 pawn 生成。

在这里插入图片描述
我们截取了 Player Ini 事件的最后一段 重点描述。 我们需要生成的pawn 蓝图 名称为 : BP Tank Pawn. 我们在这个蓝图中 定义一个liner color 类型的变量 , 并设置成 replicated
在这里插入图片描述
这个变量的类型 一开始我们设置成color ,结果从外部赋值时一直报错,修改为此类型之后,报错消失。

对 Tank pawn 的 颜色变更逻辑流程:

1,初始化时, 创建动态材质实例。
2, 通过 rpc 的 server 函数 和 广播函数 ,实现对拥有此 pawn的 所有pawn 设置 动态材质的参数。

在这里插入图片描述
上面是创建动态材质实例。
在这里插入图片描述
RPC server 函数和 广播函数 实现对 此Pawn 以及所有的客户端进行 颜色变更。

在这里插入图片描述
这是在 BP Tank Pawn 起始阶段, 直接调用 本地的color 进行颜色的同步。 注意 ,我们做了一个延时。 这样可以保证所有的相关pawn 可以实现颜色的变更。 否则可能会出现一个 pawn 颜色无法改变的情况。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值