码迷,mamicode.com
首页 > 其他好文 > 详细

[UE4]RPC,远程调用

时间:2018-11-01 15:10:43      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:表格   特定   ext   服务器端   官方   输出   code   str   proc   

RPC

一、Remote Procedure Call:远程程序调用

二、一个进程调用另外一个进程上的函数

技术分享图片

由于“Server-shoot”方法被标记为“在服务器上运行”,所以尽管是在第二个窗口(客户端)开火,输出的信息是:Server:准备射击,表明这是在服务器上运行。

技术分享图片

 技术分享图片

在服务器上“Server-shoot”方法又调用调用了“MutiCast-Shoot”方法,“MutiCast-Shoot”(被标记为“多路传送”),所以服务器会通知所有客户端都去执行这个方法。

结果就显示:Server:全体射击和Client 1:全体射击。

因为没有勾选“运行专用服务器”,因此第一个窗口同时是服务器和客户端,“多路传送”的时候也把消息传送给也身兼客户端的自己,因此就会显示“Server:全体射击”

技术分享图片

二、远程调用Actor拥有权。

  1. 如果通过Get All Actors Of Class函数获得到客户端A控制的角色实例赋值给标记为“在服务器端运行”的方法“Server-shoot”(目标默认是self),在客户端B上运行(把客户端B实例赋值给“Server-shoot”的目标参数),服务器上并不会去执行这个操作,被舍弃了,当然也不会被传播到其他客户端。
  2. 但如果是在服务器上调用标记为“在服务器端运行”的方法“Server-shoot”,不管“Server-shoot”的目标参数赋值给谁,都会被执行,也会被传播到其他客户端。

技术分享图片

 

下面的表格根据执行调用的 actor 的所有权(最左边的一列),总结了特定类型的 RPC 将在哪里执行。

从服务器调用的 RPC

 

Actor 所有权

未复制

NetMulticast

Server

Client

Client-owned actor

在服务器上运行

在服务器和所有客户端上运行

在服务器上运行

在 actor 的所属客户端上运行

Server-owned actor

在服务器上运行

在服务器和所有客户端上运行

在服务器上运行

在服务器上运行

Unowned actor

在服务器上运行

在服务器和所有客户端上运行

在服务器上运行

在服务器上运行

 

从客户端调用的 RPC

 

Actor 所有权

未复制

NetMulticast

Server

Client

Owned by invoking client

在执行调用的客户端上运行

在执行调用的客户端上运行

在服务器上运行

在执行调用的客户端上运行

Owned by a different client

在执行调用的客户端上运行

在执行调用的客户端上运行

丢弃

在执行调用的客户端上运行

Server-owned actor

在执行调用的客户端上运行

在执行调用的客户端上运行

丢弃

在执行调用的客户端上运行

Unowned actor

在执行调用的客户端上运行

在执行调用的客户端上运行

丢弃

在执行调用的客户端上运行

关于RPC远程调用更多信息查看官方文档:http://api.unrealengine.com/CHN/Gameplay/Networking/Actors/RPCs/index.html 

[UE4]RPC,远程调用

标签:表格   特定   ext   服务器端   官方   输出   code   str   proc   

原文地址:https://www.cnblogs.com/timy/p/9888868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!