Skip to content

TriggerEncapsulation.Event ​

DualEndEvent 双端 ​

命名空间 TriggerEncapsulation.Event

csharp
public class DualEndEvent : IGameClass

双端事件发布器,提供在客户端和服务端之间发布事件的统一 API。

备注

双端事件系统为初级用户提供了简化的跨端事件通信机制。 用户只需定义实现 IDualEndEvent1的事件类型, 然后使用Boolean)方法发布事件, 事件会自动转发到对端并触发已注册的触发器。 双端事件使用框架默认 JSON 配置序列化事件数据。需要跨端传递的数据必须定义为公开get; set; 属性;普通字段不会参与序列化,也不会传递到对端。 统一 API: 客户端:Publish(event) 将事件发送到服务端 服务端:Publish(event) 将事件广播到所有客户端 服务端:Publish(player, event) 将事件发送到指定客户端 服务端:Publish(event, filter)将事件广播到过滤后的客户端 使用限制: 客户端:双端触发器只能注册到Instance服务端:双端触发器可以注册到Player或Instance`

方法 ​

Publish 双端 ​

csharp
public static bool Publish<TEvent>(TEvent eventData, bool publishLocally = true) where TEvent : class, IDualEndEvent<TEvent>

发布双端事件

  • eventData — 要发布的事件数据
  • publishLocally — 是否同时在本地发布事件,默认为 true

返回: 如果消息成功发送则返回 true;否则返回 false

备注

此方法提供统一的事件发布 API: 客户端:将事件发送到服务端。服务端接收后会自动设置 Sender 属性为发送者玩家,并在对应的 Player 和 Instance 上发布事件。 服务端:将事件广播到所有客户端。每个客户端接收后会在 Instance 上发布事件。 如果 为 true(默认),事件也会在本地立即发布。 事件数据跨端传递时只会序列化公开 get; set; 属性;普通字段不会参与序列化。

PublishAsync 双端 ​

csharp
public static Task<bool> PublishAsync<TEvent>(TEvent eventData, bool publishLocally = true) where TEvent : class, IDualEndEvent<TEvent>

异步发布双端事件

  • eventData — 要发布的事件数据
  • publishLocally — 是否同时在本地发布事件

返回: 表示异步操作的任务,结果为消息是否成功发送

OnRegisterGameClass 双端 ​

csharp
public static void OnRegisterGameClass()

Publish 仅服务端 ​

csharp
public static bool Publish<TEvent>(Player targetPlayer, TEvent eventData, bool publishLocally = true) where TEvent : class, IDualEndEvent<TEvent>

将双端事件发布到指定客户端

  • targetPlayer — 目标玩家
  • eventData — 要发布的事件数据
  • publishLocally — 是否同时在本地发布事件,默认为 true

返回: 如果消息成功发送则返回 true;否则返回 false

备注

此方法将事件序列化并通过 TypedMessage 发送到指定客户端。 客户端接收后会在 Instance 上发布事件。 如果 为 true(默认),事件也会在本地的 Player 和 Instance 上发布。

PublishAsync 仅服务端 ​

csharp
public static Task<bool> PublishAsync<TEvent>(Player targetPlayer, TEvent eventData, bool publishLocally = true) where TEvent : class, IDualEndEvent<TEvent>

异步将双端事件发布到指定客户端

  • targetPlayer — 目标玩家
  • eventData — 要发布的事件数据
  • publishLocally — 是否同时在本地发布事件

返回: 表示异步操作的任务,结果为消息是否成功发送

Publish 仅服务端 ​

csharp
public static int Publish<TEvent>(TEvent eventData, Func<Player, bool> filter, bool publishLocally = true) where TEvent : class, IDualEndEvent<TEvent>

将双端事件发布到过滤后的客户端

  • eventData — 要发布的事件数据
  • filter — 玩家过滤条件,只有通过过滤的玩家才会接收到事件
  • publishLocally — 是否同时在本地发布事件,默认为 true

返回: 成功发送消息的玩家数量

备注

此方法将事件序列化并通过 TypedMessage 广播到过滤后的客户端。 每个客户端接收后会在 Instance 上发布事件。

PublishAsync 仅服务端 ​

csharp
public static Task<int> PublishAsync<TEvent>(TEvent eventData, Func<Player, bool> filter, bool publishLocally = true) where TEvent : class, IDualEndEvent<TEvent>

异步将双端事件发布到过滤后的客户端

  • eventData — 要发布的事件数据
  • filter — 玩家过滤条件
  • publishLocally — 是否同时在本地发布事件

返回: 表示异步操作的任务,结果为成功发送消息的玩家数量

EventClientMessage 双端 ​

命名空间 TriggerEncapsulation.Event

csharp
public class EventClientMessage : ITriggerEvent<EventClientMessage>

构造函数 ​

EventClientMessage 双端 ​

csharp
public EventClientMessage(Player player, byte[] message)

属性 ​

Player 双端 ​

csharp
public Player Player { get; }

Message 双端 ​

csharp
public byte[] Message { get; }

EventServerMessage 双端 ​

命名空间 TriggerEncapsulation.Event

csharp
public class EventServerMessage : ITriggerEvent<EventServerMessage>

构造函数 ​

EventServerMessage 双端 ​

csharp
public EventServerMessage(byte[] message)

属性 ​

Message 双端 ​

csharp
public byte[] Message { get; }

IDualEndEvent 双端 ​

命名空间 TriggerEncapsulation.Event

csharp
public interface IDualEndEvent

属性 ​

Sender 仅服务端 ​

csharp
public Player? Sender { get; set; }

获取或设置事件的发送者玩家。