主题
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; }获取或设置事件的发送者玩家。