UE 网络编程
1. C++中在哪个阶段设置Actor replicated?
在构造函数中,直接设置,会在服务器上执行。无需HasAuthority()的判断,因为此时网络角色的变量还没有更新。
AMyActor::AMyActor()
{
SetReplicates(true); // 同步Actor的存在
SetReplicateMovement(true); // 同步位置/旋转/速度
}
2. Local Role 和 Remote Role 表格
| 机器 | Actor类型 | LocalRole | RemoteRole | 备注 |
|---|---|---|---|---|
| Server (Listen) | 所有 Actor | Authority | SimProxy | GetRemoteRole() 本地读取统一返回 SimProxy |
| Client | 自己的 Pawn | AutonomousProxy | Authority | IsLocalController()=true |
| Client | 其他人的 Pawn | SimProxy | Authority | |
| Client | 非玩家 Actor | SimProxy | Authority |
3. Rep Notifies
在蓝图中,服务器和client都执行。在C++中,只有Client执行。