# 前言 继承关系:BP_XXX_Base -> BP_Idol_Base -> TsIdolActor -> AVCharacter -> ACharacter 。 主要逻辑位于TsIdolActor中,文件路径为`Script/LiveDirector/Character/TsIdolActor.ts` # AVCharacter 主要实现了`virtual void OnRep_AttachmentReplication() override;`,声明了若干BlueprintNativeEvent: - bool CanSyncRelativeTransform(); - void BeforeAttachToNewParent(); - void AfterAttachToNewParent(); ## OnRep_AttachmentReplication() 注释: >// 动捕模式下,CanSync=false. 各端自行计算Actor Location, client无需使用Server计算结果 // 自由行走模式下, CanSync=true,client需要同步server的transform信息 # TsIdolActor.ts ## VirtualOverrider ```typescript CanSyncRelativeTransform(): boolean { if (Utils.HasTag(this.PropTags, new UE.GameplayTag("Idol.AIACao"))) { return false; } if(this.MovementComp && this.MovementComp.ManulMovement){ return false } var animInstance = this.Mesh.GetAnimInstance() as UE.IdolAnimInstance let fullbodyNode = Reflect.get(animInstance, 'AnimGraphNode_Fullbody') as UE.AnimNode_FullBody return !(fullbodyNode && fullbodyNode.bGetMotionData) } ```