EventService
класс в UnityEditor.MPE
Описание
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 | EventService подключен к каналу "события" ChannelService. |
Статические методы
| Метод | Описание |
|---|---|
| CancelRequest | Проверяет, есть ли ожидаемый запрос для конкретного события, и, если есть, отменяет его. См. EventService.Request для более подробной информации о Request. |
| Clear | Очистить все ожидающие Запросы. |
| Close | Закрывает EventService, прерывает подключения к ChannelService и обеспечивает, чтобы больше не обрабатывались обработчики. |
| Emit | Отправка всем сообщения «запусти и забудь» ChannelClients подключен к маршруту "события". |
| IsRequestPending | Проверяет, отложен ли запрос для определенного события. Дополнительные сведения о запросе см. в EventService.Request. |
| Log | Отправляет сообщение журнала на ChannelService. Сообщения журнала печатаются в окне Консоли. |
| RegisterEventHandler | Регистрирует обработчика для определенного типа события. Обработчик вызывается каждый раз, когда отправляется сообщение указанного типа. Сообщения отправляются с помощью EventService.Emit или EventService.Request. |
| Request | Отправляет запрос всем подключенным клиентам на канале "события". |
| Start | Запускает EventService, чтобы он прослушивал новые сообщения. |
| Tick | Отметка EventService. Этот параметр обрабатывает все входящие и исходящие сообщения. По умолчанию EventService отмечается на каждом EditorApplication.update. |
| UnregisterEventHandler | Отменяет регистрацию обработчика для конкретного события. |