Version: 2022.3

EditorConnection

class in UnityEditor.Networking.PlayerConnection

/

继承自:ScriptableSingleton_1


实现接口:IEditorPlayerConnection

切换到手册

描述

处理从 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("EXAMPLEGUID"); public static readonly Guid kMsgSendPlayerToEditor = new Guid("EXAMPLEGUID");

[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将数据发送到连接的播放器。
TrySend尝试将数据从编辑器发送给连接的播放器。
Unregister取消注册已注册的回调。
UnregisterConnection取消注册连接回调。
UnregisterDisconnection取消注册断开连接回调。

继承的成员

静态变量

instanceGets the instance of the Singleton. Unity creates the Singleton instance when this property is accessed for the first time. If you use the FilePathAttribute, then Unity loads the data on the first access as well.

变量

hideFlags该对象应该隐藏、随场景一起保存还是由用户修改?
name对象的名称。

公共函数

GetInstanceIDGets the instance ID of the object.
ToString返回对象的名称。

受保护的函数

SaveSaves the current state of the ScriptableSingleton.

静态函数

Destroy移除 GameObject、组件或资源。
DestroyImmediate立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad在加载新的 Scene 时,请勿销毁 Object。
FindAnyObjectByTypeRetrieves any active loaded object of Type type.
FindFirstObjectByTypeRetrieves the first active loaded object of Type type.
FindObjectOfType返回第一个类型为 type 的已加载的激活对象。
FindObjectsByTypeRetrieves a list of all loaded objects of Type type.
FindObjectsOfTypeGets a list of all loaded objects of Type type.
Instantiate克隆 original 对象并返回克隆对象。
CreateInstance创建脚本化对象的实例。
GetFilePathGet the file path where this ScriptableSingleton is saved to.

运算符

bool该对象是否存在?
operator !=比较两个对象是否引用不同的对象。
operator ==比较两个对象引用,判断它们是否引用同一个对象。

消息

Awake当 ScriptableObject 脚本启动时调用此函数。
OnDestroy当脚本化对象将销毁时调用此函数。
OnDisable当脚本化对象超出范围时调用此函数。
OnEnable当对象加载时调用此函数。
OnValidateEditor-only function that Unity calls when the script is loaded or a value changes in the Inspector.
Reset重置为默认值。