参考:https://docs.unrealengine.com/4.27/zh-CN/InteractiveExperiences/Networking/Actors/Properties/
类属性复制
头文件:#include "UnrealNetwork.h"
(1)要网络复制的属性
UPROPERTY( replicated )
bool bCreator=false;
(2)重写 GetLifetimeReplicatedProps
void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
(2.1) GetLifetimeReplicatedProps 实现
void AWAN_PlayerController::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
DOREPLIFETIME(AWAN_PlayerController, bCreator);
}
复制3种情况:
a. DOREPLIFETIME普通复制,复制到所有关联端;
b. DOREPLIFETIME_CONDITION条件复制,复制条件格式:
DOREPLIFETIME_CONDITION( 类名, 待复制属性名, 条件 );
//系统提供条件如下:
- COND_InitialOnly—该属性将只尝试发送初始值
- COND_OwnerOnly—该属性将只发送给actor的所有者
- COND_SkipOwner—该属性发送到除所有者之外的所有连接
- COND_SimulatedOnly—该属性将只发送给模拟的参与者
- COND_AutonomousOnly—该属性将只发送给自治的参与者
- COND_SimulatedOrPhysics-此属性将发送给模拟的OR bRepPhysics角色
- COND_InitialOrOwner——该属性将发送初始包,或发送给参与者所有者
- COND_Custom——这个属性没有特殊的条件,但是希望能够通过SetCustomIsActiveOverride来切换开关
c. DOREPLIFETIME_ACTIVE_OVERRIDE自定义条件,系统提供的条件满足不了需求时应用;(面向Actor而非连接)