结合官方图表解释虚幻引擎RPC
Calling Machine:你在那个机器上调用RPC函数
Owning Connection:你在哪个机器上控制角色
Executing Machine:RPC函数会在哪里执行
Invoking Client:调用函数的那个客户端
Server RPC
| Calling Machine | Owning Connection | Executing Machine |
|---|---|---|
| Server | Client | Server |
| Server | Server | Server |
| Server | None | Server |
| Client | Invoking Client | Server |
| Client | Different Client | Dropped |
| Client | Server | Dropped |
| Client | None | Dropped |
第一行解读:
在Server上调用ServerRPC,玩家在Client上控制角色,则会在Server上执行
以此类推...
它的执行一般是在服务器
Client RPC
| Calling Machine | Owning Connection | Executing Machine |
|---|---|---|
| Server | Owning Client | Owning Client |
| Server | Server | Server |
| Server | None | Server |
| Client | Invoking Client | Invoking Client |
| Client | Different Client | Invoking Client |
| Client | Server | Invoking Client |
| Client | None | Invoking Client |
它的执行一般是在客户端
Remote RPC
| Calling Machine | Owning Connection | Executing Machine |
|---|---|---|
| Server | Owning Client | Owning Client |
| Server | Server | Dropped |
| Server | None | Dropped |
| Client | Invoking Client | Server |
| Client | Different Client | Dropped |
| Client | Server | Dropped |
| Client | None | Dropped |
RemoteRPC
只能在服务器 调用 在玩家控制的客户端 上执行
或者在玩家控制的客户端 调用 在服务器 上执行
注意在服务器上控制的玩家 调用RemoteRPC 会失效
其他情况 也会失效
Net Multicast RPC
| Calling Machine | Owning Connection | Executing Machine |
|---|---|---|
| Server | Client | Server and all Clients the invoking actor is relevant for |
| Server | Server | Server and all Clients the invoking actor is relevant for |
| Server | None | Server and all Clients the invoking actor is relevant for |
| Client | Invoking Client | Invoking Client |
| Client | Different Client | Invoking Client |
| Client | Server | Invoking Client |
| Client | None | Invoking Client |
在服务器 调用NetMulticastRPC会让所有机器执行
而在客户端 调用NetMulticastRPC只会在调用RPC的那个客户端上执行(变为普通函数)