【发布时间】:2021-09-26 06:16:48
【问题描述】:
我正在关注 Unity 中有关“Mlapi”的教程。在教程中,我在学习 RPC 时遇到了一个问题。
所以我的问题是
- 当我使用
ServerRpc属性创建方法时,'Mlapi' 如何处理该方法?根据“Mlapi”文档,调用ServerRpc函数所需要做的只是使用参数进行直接函数调用。但是当我调用ServerRpc标记的方法时会发生什么?我所做的只是调用ServerRpc属性标记的方法。但是我写的ServerRpc属性或其他Rpc 属性标记的'Mlapi' get 方法如何呢?以及“Mlapi”如何从客户端调用该方法并在另一台机器上执行?
【问题讨论】:
-
您的目标是自己构建类似的东西吗?还是纯粹的兴趣?
-
我最近构建了一个自定义的本地网络多用户,没有任何属性,您可以在远程设备上调用 any 方法.. 基本上使用反射。因此它有点慢。 attiebutes 基本上是两件事:一个混淆级别,让您更轻松,并且由于可用的方法预先注册了某个索引,因此调用它们会更快
-
这只是纯粹的兴趣,但现在我想研究 RPC。如果可以的话,你能解释一下下面的评论吗?关于 RPC wrapper 是如何拦截方法调用的?
-
RPC 仅意味着“远程过程调用”.. 基本上它仅意味着“调用方法/在远程设备上执行某些代码”。有上千种方法可以做到这一点,例如通过 TCP 或 UDP 等...包装器不是 RPC 特定的,而是一般的 c# 事物;)如果您想要一个如何构建拦截器本身的好例子,请查看Transform setter interceptor,其中有人构建了一个编译后拦截器
Transform组件.. 基本上类似的事情也是由 RPC 属性完成的 -
再次感谢您的回复!
标签: c# unity3d networking methods rpc