在系统中,新增了几个单独的接口,用于Client将消息发送给服务器的处理。

问:为什么有这些接口?

因为UE的网络部分有很多权限验证相关的内容,我们的项目中,有时候可能不需要这些权限验证,因此提供了这些接口,用于绕过权限验证,来对所有端进行消息的发送。

主要API (位于UGlobalEventLibrary中)

系统内置的三个EventTag:

以下截图默认在BeginPlay时,调用了Enable Event Listener。

Untitled

  1. SendMessageToServer() 这是一个默认接口,以GameplayTag为网络消息的唯一ID,将消息字符串发送到服务器。 参数:Sync to All Client 表示是否需要将消息同步给所有客户端 如果为true,则消息将会发送到服务器,并会转发到所有客户端; 如果为false,则只会发送到服务器;

    Untitled

  2. SendMessageToServer_ByStruct() 这是默认接口的其他形式,以GameplayTag为网络消息的唯一ID,将任意类型的结构体数据发送到服务器(这会在内部将结构体转为字符串,客户端需要使用Json工具,将字符串转为结构体来使用)。 参数:Sync to All Client 表示是否需要将消息同步给所有客户端 如果为true,则消息将会发送到服务器,并会转发到所有客户端; 如果为false,则只会发送到服务器;

    Untitled

  3. SendMessageToServer_WithName() 这与 1. SendMessageToServer() 类似,唯一不同的是,将 GameplayTag 变为了 FName,通过Name 来统一网络消息ID。

    Untitled