版本: Unity 6 (6000.0)
语言English
  • C#

EventService

UnityEditor.MPE 中的类

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

EventService 是 ChannelClient 的单例实现,它在所有 Unity 实例上运行。它连接到“events”通道,并允许 Unity 实例将 JSON 消息发送到外部进程中的其他 EventService 或其他 Unity 实例。

EventService 可以发送即发即弃消息(参见 EventService.Emit),或从单个客户端请求信息(参见 EventService.Request)。

using UnityEditor;
using UnityEngine;
using UnityEditor.MPE;
using System;

public static class EventServiceDocExample { static Action s_CustomLogEventDisconnect; static Action s_PingPongEventDisconnect;

[MenuItem("EventServiceDoc/Step 0")] static void StartChannelService() { if (!ChannelService.IsRunning()) { ChannelService.Start(); } Debug.Log($"[Step 0] ChannelService Running: {ChannelService.GetAddress()}:{ChannelService.GetPort()}"); }

[MenuItem("EventServiceDoc/Step 1")] static void SetupEventServiceHandlers() { Debug.Log("[Step 1] Setup handlers"); s_CustomLogEventDisconnect = EventService.RegisterEventHandler("custom_log", (eventType, args) => { Debug.Log($"Log a {eventType} {args[0]}"); });

s_PingPongEventDisconnect = EventService.RegisterEventHandler("pingpong", (eventType, args) => { Debug.Log($"Receive a {eventType} {args[0]}"); return "pong!"; }); }

[MenuItem("EventServiceDoc/Step 2")] static void EmitMessage() { Debug.Log("[Step 2] Emitting a custom log"); EventService.Emit("custom_log", "Hello world!", -1, EventDataSerialization.JsonUtility); }

[MenuItem("EventServiceDoc/Step 3")] static void SendRequest() { Debug.Log("[Step 3] Sending a request"); EventService.Request("pingpong", (err, data) => { Debug.Log($"Request fulfilled: {data[0]}"); }, "ping", -1, EventDataSerialization.JsonUtility); }

[MenuItem("EventServiceDoc/Step 4")] static void CloseHandlers() { Debug.Log("[Step 4] Closing all Event handlers"); s_CustomLogEventDisconnect(); s_PingPongEventDisconnect(); } }

/*

When you execute the five menu items one after the other, Unity prints the following messages to the Console window:

[Step 0] ChannelService Running: 127.0.0.1:65000

[Step 1] Setup handlers

[Step 2] Emitting a custom log

Log a custom_log Hello world!

[Step 3] Sending a request

Receive a pingpong ping

Request fulfilled: pong!

[Step 4] Closing all Event handlers

*/

静态属性

isConnected连接到 ChannelService 的“events”通道的 EventService。

静态方法

CancelRequest检查是否存在特定事件的挂起请求,如果存在,则取消它。有关 Request 的更多详细信息,请参见 EventService.Request。
Clear清除所有挂起的请求。
关闭关闭 EventService,终止与 ChannelService 的连接,并确保不再处理任何处理程序。
Emit向连接到“events”路由的所有 ChannelClient 发送即发即弃消息。
IsRequestPending检查特定事件上是否存在挂起的请求。有关 Request 的更多信息,请参见 EventService.Request。
Log向 ChannelService 发送日志消息。日志消息将打印到控制台窗口。
RegisterEventHandler为特定事件类型注册处理程序。每当发送指定类型的消息时,都会调用处理程序。消息是使用 EventService.Emit 或 EventService.Request 发送的。
Request向“events”通道上的所有连接的客户端发送请求。
Start启动 EventService 以便其侦听新消息。
Tick触发 EventService。这将处理所有传入和传出的消息。默认情况下,EventService 在每个 EditorApplication.update 上都被触发。
UnregisterEventHandler从特定事件注销处理程序。