- NetworkManagerHUD
- 属性
- 细节
- 源码
NetworkManagerHUD
NetworkManagerHUD提供用于控制游戏的网络状态的默认用户界面。它还显示有关编辑器中NetworkManager当前状态的信息。
这是作为开发和测试的辅助工具提供的,并不打算包含在已发布的游戏中。
属性
| 属性 | 功能 |
|---|---|
| showGUI | 标志显示默认UI。 |
| offsetX | UI的水平像素偏移量。 |
| offsetY | UI的垂直像素偏移量 |
细节
NetworkManagerHUD允许您在编辑器中查看许多细节,例如连接,已知网络对象列表和活动玩家对象。
源码
using System;using System.Collections.Generic;using System.ComponentModel;using UnityEngine.Networking.Match;namespace UnityEngine.Networking{[EditorBrowsable(EditorBrowsableState.Never), AddComponentMenu("Network/NetworkManagerHUD"), RequireComponent(typeof(NetworkManager))]public class NetworkManagerHUD : MonoBehaviour{public NetworkManager manager;[SerializeField]public bool showGUI = true;[SerializeField]public int offsetX;[SerializeField]public int offsetY;private bool m_ShowServer;private void Awake(){this.manager = base.GetComponent<NetworkManager>();}private void Update(){if (!this.showGUI){return;}if (!this.manager.IsClientConnected() && !NetworkServer.active && this.manager.matchMaker == null){if (Application.platform != RuntimePlatform.WebGLPlayer){if (Input.GetKeyDown(KeyCode.S)){this.manager.StartServer();}if (Input.GetKeyDown(KeyCode.H)){this.manager.StartHost();}}if (Input.GetKeyDown(KeyCode.C)){this.manager.StartClient();}}if (NetworkServer.active && this.manager.IsClientConnected() && Input.GetKeyDown(KeyCode.X)){this.manager.StopHost();}}private void OnGUI(){if (!this.showGUI){return;}int num = 10 + this.offsetX;int num2 = 40 + this.offsetY;bool flag = this.manager.client == null || this.manager.client.connection == null || this.manager.client.connection.connectionId == -1;if (!this.manager.IsClientConnected() && !NetworkServer.active && this.manager.matchMaker == null){if (flag){if (Application.platform != RuntimePlatform.WebGLPlayer){if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Host(H)")){this.manager.StartHost();}num2 += 24;}if (GUI.Button(new Rect((float)num, (float)num2, 105f, 20f), "LAN Client(C)")){this.manager.StartClient();}this.manager.networkAddress = GUI.TextField(new Rect((float)(num + 100), (float)num2, 95f, 20f), this.manager.networkAddress);num2 += 24;if (Application.platform == RuntimePlatform.WebGLPlayer){GUI.Box(new Rect((float)num, (float)num2, 200f, 25f), "( WebGL cannot be server )");num2 += 24;}else{if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "LAN Server Only(S)")){this.manager.StartServer();}num2 += 24;}}else{GUI.Label(new Rect((float)num, (float)num2, 200f, 20f), string.Concat(new object[]{"Connecting to ",this.manager.networkAddress,":",this.manager.networkPort,".."}));num2 += 24;if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Cancel Connection Attempt")){this.manager.StopClient();}}}else{if (NetworkServer.active){string text = "Server: port=" + this.manager.networkPort;if (this.manager.useWebSockets){text += " (Using WebSockets)";}GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), text);num2 += 24;}if (this.manager.IsClientConnected()){GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), string.Concat(new object[]{"Client: address=",this.manager.networkAddress," port=",this.manager.networkPort}));num2 += 24;}}if (this.manager.IsClientConnected() && !ClientScene.ready){if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Client Ready")){ClientScene.Ready(this.manager.client.connection);if (ClientScene.localPlayers.Count == 0){ClientScene.AddPlayer(0);}}num2 += 24;}if (NetworkServer.active || this.manager.IsClientConnected()){if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Stop (X)")){this.manager.StopHost();}num2 += 24;}if (!NetworkServer.active && !this.manager.IsClientConnected() && flag){num2 += 10;if (Application.platform == RuntimePlatform.WebGLPlayer){GUI.Box(new Rect((float)(num - 5), (float)num2, 220f, 25f), "(WebGL cannot use Match Maker)");return;}if (this.manager.matchMaker == null){if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Enable Match Maker (M)")){this.manager.StartMatchMaker();}num2 += 24;}else{if (this.manager.matchInfo == null){if (this.manager.matches == null){if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Create Internet Match")){this.manager.matchMaker.CreateMatch(this.manager.matchName, this.manager.matchSize, true, string.Empty, string.Empty, string.Empty, 0, 0, new NetworkMatch.DataResponseDelegate<MatchInfo>(this.manager.OnMatchCreate));}num2 += 24;GUI.Label(new Rect((float)num, (float)num2, 100f, 20f), "Room Name:");this.manager.matchName = GUI.TextField(new Rect((float)(num + 100), (float)num2, 100f, 20f), this.manager.matchName);num2 += 24;num2 += 10;if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Find Internet Match")){this.manager.matchMaker.ListMatches(0, 20, string.Empty, false, 0, 0, new NetworkMatch.DataResponseDelegate<List<MatchInfoSnapshot>>(this.manager.OnMatchList));}num2 += 24;}else{for (int i = 0; i < this.manager.matches.Count; i++){MatchInfoSnapshot matchInfoSnapshot = this.manager.matches[i];if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Join Match:" + matchInfoSnapshot.name)){this.manager.matchName = matchInfoSnapshot.name;this.manager.matchMaker.JoinMatch(matchInfoSnapshot.networkId, string.Empty, string.Empty, string.Empty, 0, 0, new NetworkMatch.DataResponseDelegate<MatchInfo>(this.manager.OnMatchJoined));}num2 += 24;}if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Back to Match Menu")){this.manager.matches = null;}num2 += 24;}}if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Change MM server")){this.m_ShowServer = !this.m_ShowServer;}if (this.m_ShowServer){num2 += 24;if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Local")){this.manager.SetMatchHost("localhost", 1337, false);this.m_ShowServer = false;}num2 += 24;if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Internet")){this.manager.SetMatchHost("mm.unet.unity3d.com", 443, true);this.m_ShowServer = false;}num2 += 24;if (GUI.Button(new Rect((float)num, (float)num2, 100f, 20f), "Staging")){this.manager.SetMatchHost("staging-mm.unet.unity3d.com", 443, true);this.m_ShowServer = false;}}num2 += 24;GUI.Label(new Rect((float)num, (float)num2, 300f, 20f), "MM Uri: " + this.manager.matchMaker.baseUri);num2 += 24;if (GUI.Button(new Rect((float)num, (float)num2, 200f, 20f), "Disable Match Maker")){this.manager.StopMatchMaker();}num2 += 24;}}}}}
?
