手机兼职在哪个网站做,上海中风险地区,杂志网站建设推广方案,物联网工程就业方向及前景目录 0 引言1 RPC基本概念1.1 定义1.2 分类 2 RPC的使用2.1 Client RPC2.2 Server RPC2.3 Multicast RPC #x1f64b;♂️ 作者#xff1a;海码007#x1f4dc; 专栏#xff1a;UE虚幻引擎专栏#x1f4a5; 标题#xff1a;【UE 网络】RPC远程过程调用 入门篇❣️ 寄语… 目录 0 引言1 RPC基本概念1.1 定义1.2 分类 2 RPC的使用2.1 Client RPC2.2 Server RPC2.3 Multicast RPC ♂️ 作者海码007 专栏UE虚幻引擎专栏 标题【UE 网络】RPC远程过程调用 入门篇❣️ 寄语书到用时方恨少事非经过不知难 最后文章作者技术和水平有限如果文中出现错误希望大家能指正同时有问题的话欢迎大家留言讨论。 0 引言
RPC是UE进行网路同步的一种关键方法 官方文档
1 RPC基本概念
1.1 定义
RPC 远程过程调用是在本地调用但在其他机器不同于执行调用的机器上远程执行的函数。
RPC 函数非常有用可允许客户端或服务器通过网络连接相互发送消息。
这些功能的主要作用是执行那些不可靠的暂时性/修饰性游戏事件。这其中包括播放声音、生成粒子或产生其他临时效果 之类的事件它们对于 Actor 的正常运作并不重要。在此之前这些类型的事件往往要通过 Actor 属性进行复制。
1.2 分类
UE中的RPC主要分为三种类型服务器RPC、客户端RPC和多播RPC。每种类型的RPC都有其特定的用途和调用方式。
2 RPC的使用
使用前确保开启了Actor复制的功能这是使用一起网络通信功能的前提。
AMyCharacter::AMyCharacter()
{bReplicates true;
}2.1 Client RPC
客户端RPC用于从服务器向特定客户端发送请求。通常用于服务器通知客户端执行某些操作例如更新UI、播放动画等。
定义
UFUNCTION(Client, Reliable)
void ClientFunction();Client标识这是一个客户端RPC。Reliable标识这个RPC是可靠的确保消息会被传递。
示例
MyCharacter.h
UFUNCTION(Client, Reliable)
void ClientDoSomething();MyCharacter.cpp
void AMyCharacter::ClientDoSomething_Implementation()
{// 客户端执行的逻辑
}在服务器调用客户端RPC
if (HasAuthority())
{ClientDoSomething();
}2.2 Server RPC
服务器RPC用于从客户端向服务器发送请求。通常用于客户端请求服务器执行某些操作例如处理玩家输入、请求数据等。
定义
UFUNCTION(Server, Reliable, WithValidation)
void ServerFunction();Server标识这是一个服务器RPC。Reliable标识这个RPC是可靠的确保消息会被传递。WithValidation标识这个RPC需要验证函数。
示例
MyCharacter.h
UFUNCTION(Server, Reliable, WithValidation)
void ServerDoSomething();MyCharacter.cpp
void AMyCharacter::ServerDoSomething_Implementation()
{// 服务器端执行的逻辑
}
bool AMyCharacter::ServerDoSomething_Validate()
{// 验证逻辑通常用于防止作弊return true;
}在客户端调用服务器RPC
if (IsLocallyControlled())
{ServerDoSomething();
}2.3 Multicast RPC
多播RPC用于从服务器向所有客户端发送请求。通常用于广播事件例如游戏状态更新、全局通知等。
定义
UFUNCTION(NetMulticast, Reliable)
void MulticastFunction();NetMulticast标识这是一个多播RPC。Reliable标识这个RPC是可靠的确保消息会被传递。
示例
MyCharacter.h
UFUNCTION(NetMulticast, Reliable)
void MulticastDoSomething();MyCharacter.cpp
void AMyCharacter::MulticastDoSomething_Implementation()
{// 所有客户端执行的逻辑
}在服务器调用多播RPC
if (HasAuthority())
{MulticastDoSomething();
}