Unity 6.3
0 онлайн 60 гостей 3 в системе
Вход

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

*/

Статические свойства

Свойство Описание
isConnectedEventService подключен к каналу "события" 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Отменяет регистрацию обработчика для конкретного события.