Sets up events for connecting to and sending data to the Player.
This is a singleton class and can be accessed using EditorConnection.instance.
This can only be used in a class that inherits from MonoBehaviour, Object or ScriptableObject.
Set the "Autoconnect Profiler" in the Build Settings or build the Player through code with the BuildPipeline using build options: BuildOptions.ConnectToHost and BuildOptions.Development to initialize the connection.
The Player ID is used to tell multiple connected Players apart. By default, data is sent to all Players. A connected Player's ID is not guaranteed to be the same the next time it connects.
#pragma strict
public class EditorConnectionExample extends EditorWindow {
public static readonly var kMsgSendEditorToPlayer: Guid = new Guid("34d9b47f923142ff847c0d1f8b0554d9");
public static readonly var kMsgSendPlayerToEditor: Guid = new Guid("12871ffeaf0c489189579946d8e0840f");
@MenuItem("Test/EditorConnectionExample")
static function Init() {
var window: EditorConnectionExample = EditorConnectionExampleEditorWindow.GetWindow(EditorConnectionExample);
window.Show();
window.titleContent = new GUIContent("EditorConnectionExample");
}
function OnEnable() {
EditorConnection.instance.Initialize();
EditorConnection.instance.Register(kMsgSendPlayerToEditor, OnMessageEvent);
}
function OnDisable() {
EditorConnection.instance.Unregister(kMsgSendPlayerToEditor, OnMessageEvent);
EditorConnection.instance.DisconnectAll();
}
private function OnMessageEvent(args: MessageEventArgs) {
var text: var = Encoding.ASCII.GetString(args.data);
Debug.Log("Message from player: " + text);
}
function OnGUI() {
var playerCount: var = EditorConnection.instance.ConnectedPlayers.Count;
var builder: StringBuilder = new StringBuilder();
builder.AppendLine(String.Format("{0} players connected.", playerCount));
var i: int = 0;
for (var p: var 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"));
}
}
}
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"));
}
}
}