虚幻网络执行宏-核心作用是根据网络环境中的不同执行环境
学习目标:
这段蓝图是一个宏(Macro)定义,其核心作用是根据网络环境中的不同执行环境(例如:是否有网络权限、是否为本地控制、是否为服务器或客户端)进行条件分发执行。其逻辑结构较为复杂,但可以总结为以下几个核心流程:
宏功能名称:Network_Switch
目标:根据 Actor/Pawn 当前在网络中的角色状态,分发执行不同的逻辑分支。
输入端(Tunnel Input)
- 蓝图起点 K2Node_Tunnel_10 提供了三个输出:
- execute:执行起始信号。
Actor:传入的 Actor。
Pawn:传入的 Pawn(必须是继承自 Pawn 的对象)。
分支判断一:是否有网络权限(服务器逻辑)
CallFunction(HasAuthority) on Actor
→ IfThenElse_3
- 若 HasAuthority == true,则为服务器。
- 执行 ExecutionSequence_0
then_0 → 判断是否为本地控制的 Pawn。
then_1 → Any Server 逻辑分支(直接输出)。 若 HasAuthority == false,则为客户端。 - 执行 ExecutionSequence_1
then_0 → 判断是否为本地控制的 Pawn。
then_1 → Any Client 分支。
分支判断二:是否为本地控制(Client Owner / Peer Copy)
CallFunction(IsLocallyControlled) on Pawn
→ IfThenElse_4(服务器)
→ IfThenElse_2(客户端)
- 若为本地控制:
- 服务器路径 → Listen Owner
客户端路径 → Client Owner 若非本地控制(由其他人控制): - 服务器路径 → Server Copy
客户端路径 → Peer Copy
Tunnel Output(K2Node_Tunnel_11)
- 这个宏输出了多个执行流:
- Any Owner
Any Copy
Listen Owner
Server Copy
Client Owner
Peer Copy
Any Server
Any Client
这些输出可用于连接外部节点,以在不同网络环境下触发不同的逻辑执行路径。
应用场景
- 这个宏可以在多人联机项目中作为一个分发器,帮助你快速判断当前执行主体的网络角色,并将逻辑分别处理。例如:
- 服务器上创建Actor,但客户端上显示动画;
只允许本地控制的Pawn执行输入逻辑;
区分监听服务器与专用服务器行为。