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取消注册已注册的回调。

继承的成员

变量

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

公共函数

GetInstanceID返回对象的实例 ID。
ToString返回 GameObject 的名称。

静态函数

Destroy删除 GameObject、组件或资源。
DestroyImmediate立即销毁对象 /obj/。强烈建议您改用 Destroy。
DontDestroyOnLoad加载新场景时,不自动销毁对象 /target/。
FindObjectOfType返回第一个类型为 type 的已加载的激活对象。
FindObjectsOfType返回所有类型为 type 的已加载的激活对象的列表。
Instantiate克隆 original 对象并返回克隆对象。
CreateInstance创建脚本化对象的实例。

运算符

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

消息

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