最后说说怎么用OnRep完成子弹的同步。
OnRep
使用属性同步也能够完成Client和Server的同步,仍是以之前的Fire功能为例。
Multicast相关部分可以全注释掉了,在头文件声明要同步的属性Fired和要调用的函数OnRep_OnFire():
UPROPERTY(ReplicatedUsing = OnRep_OnFire)
uint8 Fired;
UFUNCTION()
void OnRep_OnFire();
这里的ReplicatedUsing可以这样简单理解:Server的Fired值变化时,Client中会触发函数OnRep_OnFire(),但是在Server需要手动调用OnRep_OnFire()。
在cpp中进行OnRep_OnFire()的实现,并进行属性的条件复制:
void AMultiplayerCharacter::OnRep_OnFire()
{
/*生成投射物*/
/*开枪的动画*/
/*生成声音*/
/*...*/
}
void AMultiplayerCharacter