EditorConnection

class in UnityEditor.Networking.PlayerConnection

/

继承自:ScriptableObject

切换到手册

描述

处理从 Editor 到 Player 的连接。

设置事件以连接到 Player 并向其发送数据。

这是一个单例类,可使用 EditorConnection.instance 进行访问。

这只能用于从 MonoBehaviour、Object 或 ScriptableObject 继承的类。

在 Build Settings 中设置“Autoconnect Profiler”,或者通过 BuildPipeline 代码构建 Player 并使用构建选项BuildOptions.ConnectToHostBuildOptions.Development 来初始化连接。

Player ID 用于区分多个连接的 Player。默认情况下,数据将发送到所有 Player。已连接 Player 的 ID 在下次连接时不一定相同。

using System;
using UnityEngine;
using UnityEditor;
using System.Text;
using UnityEditor.Networking.PlayerConnection;
using UnityEngine.Networking.PlayerConnection;

public class EditorConnectionExample : EditorWindow { public static readonly Guid kMsgSendEditorToPlayer = new Guid("34d9b47f923142ff847c0d1f8b0554d9"); public static readonly Guid kMsgSendPlayerToEditor = new Guid("12871ffeaf0c489189579946d8e0840f");

[MenuItem("Test/EditorConnectionExample")] static void Init() { EditorConnectionExample window = (EditorConnectionExample)EditorWindow.GetWindow(typeof(EditorConnectionExample)); window.Show(); window.titleContent = new GUIContent("EditorConnectionExample"); }

void OnEnable() { EditorConnection.instance.Initialize(); EditorConnection.instance.Register(kMsgSendPlayerToEditor, OnMessageEvent); }

void OnDisable() { EditorConnection.instance.Unregister(kMsgSendPlayerToEditor, OnMessageEvent); EditorConnection.instance.DisconnectAll(); }

private void OnMessageEvent(MessageEventArgs args) { var text = Encoding.ASCII.GetString(args.data); Debug.Log("Message from player: " + text); }

void OnGUI() { var playerCount = EditorConnection.instance.ConnectedPlayers.Count; StringBuilder builder = new StringBuilder(); builder.AppendLine(string.Format("{0} players connected.", playerCount)); int i = 0; foreach (var p in EditorConnection.instance.ConnectedPlayers) { builder.AppendLine(string.Format("[{0}] - {1} {2}", i++, p.name, p.playerId)); } EditorGUILayout.HelpBox(builder.ToString(), MessageType.Info);

if (GUILayout.Button("Send message to player")) { EditorConnection.instance.Send(kMsgSendEditorToPlayer, Encoding.ASCII.GetBytes("Hello from Editor")); } } }

变量

ConnectedPlayers连接的播放器的列表。

公共函数

DisconnectAll这会断开所有活动连接。
Initialize初始化 EditorConnection。
Register对特定消息 ID 注册回调。
RegisterConnection注册一个回调,当新 Player 连接到 Editor 时执行。
RegisterDisconnection当 Player 断开连接时,对该 Player 注册回调。
Send将数据发送到一个或多个 Player。
Unregister取消注册已注册的回调。

继承的成员

静态函数

CreateInstance创建脚本化对象的实例。

消息

Awake当 ScriptableObject 脚本启动时调用此函数。
OnDestroy当脚本化对象将销毁时调用此函数。
OnDisable当脚本化对象超出范围时调用此函数。
OnEnable当对象加载时调用此函数。