Multicast 是针对特定 Actor 的。只有这个 Actor 在所有客户端都存在时,基于它发出的 Multicast 才可能被所有客户端收到。
下面的调用来自挂在 PlayerController 上的组件:
function BP_PlayerInteractEntityComponent:ResponseToAllClients(
playerKey, entityInstanceID, errCode, errMessage)
if not UGCGameSystem.IsServer() then
return
end
UnrealNetwork.CallUnrealRPC_Multicast(
self,
"RPC_Client_ResponseInteract",
playerKey,
entityInstanceID,
errCode,
errMessage
)
end
每个客户端只拥有自己的 PlayerController,因此其他客户端不存在与发送端对应的这个 Actor,无法收到消息。
处理方式是通过所有客户端都存在的 GameState 中转,或者由服务端遍历所有 PlayerController 逐个发送。
Discussion
留言讨论
发表留言时,评论服务会记录必要的 IP 与 User-Agent 信息,用于安全审核和防止滥用。