目的:在多人联机模式下,在每个pawn的上方显示textrender,并且在textrender里显示每个pawn的playerid
下面以一个listen server和两个client的方式测试。
1. 创建一个带有textrender的actor,并且勾选其replicated开关
2. 在Charactor的蓝图里面创建出textrender的actor并attach到Charactor上,并且将spawn出来的actor设置到本地
变量,后面需要用到这个变量来设置其文子,因为其实动态创建出来的。
这里是由服务器来动态创建出带有textrender的actor,然后attach到Charactor上,然后把textrender同步
到客户端上,这样客户端的textrender就是服务器端一个副本了。
另外也可以直接在蓝图里把textrender的actor挂载成charactor的子组件,就不用上面的蓝图动态创建了。
3. 在GameMode里面获得并保存所有的player control
4. 在textrender的actor里面创建一个成员变量name,并且把他的同步属性设置为RepNotify,并实现
其onRepName函数,来设置textrender要显示的player id
做到这里,textrender已经被我们同步了,名子变量也同步了,名子变量一旦有变化,就会设置textrender显示。
接下来只要在服务器端吧player id正确设置即可。
5 . 这里就是使用GameState里面保存的playid,GameMode里面保存的Player Control得到Pawn来设置其
textrender里面的name变量。
总结:
1. textrender上面显示的文件并不会同步,因此我们只能使用一个变量来保存文字,然后同步这个变量,并且
在变量的repnotify函数里来设置文字显示。
2. 只有服务器能拿到所有的playcontrol,因为设置文字变量由服务器来完成
效果展示: