Unreal Engine

GetLifetimeReplicatedProps

该函数用于注册 Actor 的网络同步变量,需先调用父类实现,再用 DOREPLIFETIME 声明需要同步的属性。

这个函数是复制系统的注册表。你可以把它理解成:每当你创建一个开启了网络同步的 Actor,引擎就会来问它一次:“嘿,你有哪些变量需要我帮你同步?”

这个函数就是你回答这个问题的窗口。它的执行流程分三步:

  1. 引擎调用时机:在 Actor 第一次被创建并开启复制(bReplicates = true)时,引擎底层会调用这个函数。
  2. Super::GetLifetimeReplicatedProps(OutLifetimeProps) 的作用:先让父类把它的同步变量注册进去。如果你不写这行,父类(ACharacter)里引擎内置的同步变量(如移动组件的某些状态)就会丢失。
  3. DOREPLIFETIME(AMyCharacter, Health) 的作用:把 Health 这个名字告诉引擎,并在内部生成一套规则(默认对所有连接的客户端同步,只要值变了就发一次更新)。

对应的 .h 声明:

protected:
    virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;

其中 override 表示你在重写父类的虚函数,const 表示这个函数不会修改类的任何成员(它只往 OutLifetimeProps 里填信息)。