Unreal Engine
GetLifetimeReplicatedProps
该函数用于注册 Actor 的网络同步变量,需先调用父类实现,再用 DOREPLIFETIME 声明需要同步的属性。
这个函数是复制系统的注册表。你可以把它理解成:每当你创建一个开启了网络同步的 Actor,引擎就会来问它一次:“嘿,你有哪些变量需要我帮你同步?”
这个函数就是你回答这个问题的窗口。它的执行流程分三步:
- 引擎调用时机:在 Actor 第一次被创建并开启复制(
bReplicates = true)时,引擎底层会调用这个函数。 Super::GetLifetimeReplicatedProps(OutLifetimeProps)的作用:先让父类把它的同步变量注册进去。如果你不写这行,父类(ACharacter)里引擎内置的同步变量(如移动组件的某些状态)就会丢失。DOREPLIFETIME(AMyCharacter, Health)的作用:把Health这个名字告诉引擎,并在内部生成一套规则(默认对所有连接的客户端同步,只要值变了就发一次更新)。
对应的 .h 声明:
protected:
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
其中 override 表示你在重写父类的虚函数,const 表示这个函数不会修改类的任何成员(它只往 OutLifetimeProps 里填信息)。