mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
NetWorkInspect
NetWorkInspect
This commit is contained in:
67
Assets/TEngine/Scripts/Editor/Inspector/NetworkInspector.cs
Normal file
67
Assets/TEngine/Scripts/Editor/Inspector/NetworkInspector.cs
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using TEngine.Runtime;
|
||||||
|
|
||||||
|
namespace TEngine.Editor
|
||||||
|
{
|
||||||
|
[CustomEditor(typeof(TEngine.Runtime.Network))]
|
||||||
|
internal sealed class NetworkComponentInspector : TEngineInspector
|
||||||
|
{
|
||||||
|
public override void OnInspectorGUI()
|
||||||
|
{
|
||||||
|
base.OnInspectorGUI();
|
||||||
|
|
||||||
|
if (!EditorApplication.isPlaying)
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("Available during runtime only.", MessageType.Info);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEngine.Runtime.Network t = (TEngine.Runtime.Network)target;
|
||||||
|
|
||||||
|
if (IsPrefabInHierarchy(t.gameObject))
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("Network Channel Count", t.NetworkChannelCount.ToString());
|
||||||
|
|
||||||
|
INetworkChannel[] networkChannels = t.GetAllNetworkChannels();
|
||||||
|
foreach (INetworkChannel networkChannel in networkChannels)
|
||||||
|
{
|
||||||
|
DrawNetworkChannel(networkChannel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawNetworkChannel(INetworkChannel networkChannel)
|
||||||
|
{
|
||||||
|
EditorGUILayout.BeginVertical("box");
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField(networkChannel.Name, networkChannel.Connected ? "Connected" : "Disconnected");
|
||||||
|
EditorGUILayout.LabelField("Service Type", networkChannel.ServiceType.ToString());
|
||||||
|
EditorGUILayout.LabelField("Address Family", networkChannel.AddressFamily.ToString());
|
||||||
|
EditorGUILayout.LabelField("Local Address", networkChannel.Connected ? networkChannel.Socket.LocalEndPoint.ToString() : "Unavailable");
|
||||||
|
EditorGUILayout.LabelField("Remote Address", networkChannel.Connected ? networkChannel.Socket.RemoteEndPoint.ToString() : "Unavailable");
|
||||||
|
EditorGUILayout.LabelField("Send Packet", Utility.Text.Format("{0} / {1}", networkChannel.SendPacketCount.ToString(), networkChannel.SentPacketCount.ToString()));
|
||||||
|
EditorGUILayout.LabelField("Receive Packet", Utility.Text.Format("{0} / {1}", networkChannel.ReceivePacketCount.ToString(), networkChannel.ReceivedPacketCount.ToString()));
|
||||||
|
EditorGUILayout.LabelField("Miss Heart Beat Count", networkChannel.MissHeartBeatCount.ToString());
|
||||||
|
EditorGUILayout.LabelField("Heart Beat", Utility.Text.Format("{0} / {1}", networkChannel.HeartBeatElapseSeconds.ToString("F2"), networkChannel.HeartBeatInterval.ToString("F2")));
|
||||||
|
EditorGUI.BeginDisabledGroup(!networkChannel.Connected);
|
||||||
|
{
|
||||||
|
if (GUILayout.Button("Disconnect"))
|
||||||
|
{
|
||||||
|
networkChannel.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EditorGUI.EndDisabledGroup();
|
||||||
|
}
|
||||||
|
EditorGUILayout.EndVertical();
|
||||||
|
|
||||||
|
EditorGUILayout.Separator();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 19f8ad2cf14a6ba458cc98dd4c9ea0ee
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace TEngine.Runtime
|
namespace TEngine.Runtime
|
||||||
@@ -11,7 +12,7 @@ namespace TEngine.Runtime
|
|||||||
public class Network : UnitySingleton<Network>
|
public class Network : UnitySingleton<Network>
|
||||||
{
|
{
|
||||||
private INetworkManager m_NetworkManager = null;
|
private INetworkManager m_NetworkManager = null;
|
||||||
private NetEvent m_NetEvent = NetEvent.Instance;
|
public NetworkManager NetworkManager;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取网络频道数量。
|
/// 获取网络频道数量。
|
||||||
@@ -20,14 +21,42 @@ namespace TEngine.Runtime
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
if (m_NetworkManager == null)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return m_NetworkManager.NetworkChannelCount;
|
return m_NetworkManager.NetworkChannelCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Awake()
|
protected override void OnLoad()
|
||||||
|
{
|
||||||
|
base.OnLoad();
|
||||||
|
|
||||||
|
GameEventMgr.Instance.AddEventListener(TEngineEvent.OnStartGame,OnStartGame);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (m_NetworkManager != null)
|
||||||
|
{
|
||||||
|
NetworkManager.Update(Time.deltaTime, Time.unscaledDeltaTime);;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnDestroy()
|
||||||
|
{
|
||||||
|
base.OnDestroy();
|
||||||
|
if (NetworkManager != null)
|
||||||
|
{
|
||||||
|
NetworkManager.Shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnStartGame()
|
||||||
{
|
{
|
||||||
base.Awake();
|
|
||||||
m_NetworkManager = new NetworkManager();
|
m_NetworkManager = new NetworkManager();
|
||||||
|
NetworkManager = m_NetworkManager as NetworkManager;
|
||||||
if (m_NetworkManager == null)
|
if (m_NetworkManager == null)
|
||||||
{
|
{
|
||||||
Log.Fatal("Network manager is invalid.");
|
Log.Fatal("Network manager is invalid.");
|
||||||
@@ -39,12 +68,8 @@ namespace TEngine.Runtime
|
|||||||
m_NetworkManager.NetworkMissHeartBeat += OnNetworkMissHeartBeat;
|
m_NetworkManager.NetworkMissHeartBeat += OnNetworkMissHeartBeat;
|
||||||
m_NetworkManager.NetworkError += OnNetworkError;
|
m_NetworkManager.NetworkError += OnNetworkError;
|
||||||
m_NetworkManager.NetworkCustomError += OnNetworkCustomError;
|
m_NetworkManager.NetworkCustomError += OnNetworkCustomError;
|
||||||
}
|
|
||||||
|
if (NetEvent.Instance == null)
|
||||||
protected override void OnLoad()
|
|
||||||
{
|
|
||||||
base.OnLoad();
|
|
||||||
if (m_NetEvent == null)
|
|
||||||
{
|
{
|
||||||
Log.Fatal("Event component is invalid.");
|
Log.Fatal("Event component is invalid.");
|
||||||
return;
|
return;
|
||||||
@@ -113,27 +138,27 @@ namespace TEngine.Runtime
|
|||||||
|
|
||||||
private void OnNetworkConnected(object sender, NetworkConnectedEventArgs e)
|
private void OnNetworkConnected(object sender, NetworkConnectedEventArgs e)
|
||||||
{
|
{
|
||||||
m_NetEvent.Fire(this, e);
|
NetEvent.Instance.Fire(this, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnNetworkClosed(object sender, NetworkClosedEventArgs e)
|
private void OnNetworkClosed(object sender, NetworkClosedEventArgs e)
|
||||||
{
|
{
|
||||||
m_NetEvent.Fire(this, e);
|
NetEvent.Instance.Fire(this, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnNetworkMissHeartBeat(object sender, NetworkMissHeartBeatEventArgs e)
|
private void OnNetworkMissHeartBeat(object sender, NetworkMissHeartBeatEventArgs e)
|
||||||
{
|
{
|
||||||
m_NetEvent.Fire(this, e);
|
NetEvent.Instance.Fire(this, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnNetworkError(object sender, NetworkErrorEventArgs e)
|
private void OnNetworkError(object sender, NetworkErrorEventArgs e)
|
||||||
{
|
{
|
||||||
m_NetEvent.Fire(this, e);
|
NetEvent.Instance.Fire(this, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnNetworkCustomError(object sender, NetworkCustomErrorEventArgs e)
|
private void OnNetworkCustomError(object sender, NetworkCustomErrorEventArgs e)
|
||||||
{
|
{
|
||||||
m_NetEvent.Fire(this, e);
|
NetEvent.Instance.Fire(this, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user