Handles the connection from the Editor to the Player.
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("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 | A list of the connected players. |
DisconnectAll | This disconnects all of the active connections. |
Initialize | Initializes the EditorConnection. |
Register | Registers a callback on a certain message ID. |
RegisterConnection | Registers a callback, executed when a new Player connects to the Editor. |
RegisterDisconnection | Registers a callback on a Player when that Player disconnects. |
Send | Sends data to multiple or single Player(s). |
Unregister | Deregisters a registered callback. |
hideFlags | Should the object be hidden, saved with the scene or modifiable by the user? |
name | The name of the object. |
GetInstanceID | Returns the instance id of the object. |
ToString | Returns the name of the GameObject. |
Destroy | Removes a gameobject, component or asset. |
DestroyImmediate | Destroys the object obj immediately. You are strongly recommended to use Destroy instead. |
DontDestroyOnLoad | Makes the object target not be destroyed automatically when loading a new scene. |
FindObjectOfType | Returns the first active loaded object of Type type. |
FindObjectsOfType | Returns a list of all active loaded objects of Type type. |
Instantiate | Clones the object original and returns the clone. |
CreateInstance | Creates an instance of a scriptable object. |
bool | Does the object exist? |
operator != | Compares if two objects refer to a different object. |
operator == | Compares two object references to see if they refer to the same object. |
Did you find this page useful? Please give it a rating: