NetWorkInspect

NetWorkInspect
This commit is contained in:
ALEXTANG
2022-08-29 20:48:33 +08:00
parent 7158915169
commit f5e783a42c
3 changed files with 118 additions and 15 deletions

View 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();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 19f8ad2cf14a6ba458cc98dd4c9ea0ee
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace TEngine.Runtime
@@ -11,7 +12,7 @@ namespace TEngine.Runtime
public class Network : UnitySingleton<Network>
{
private INetworkManager m_NetworkManager = null;
private NetEvent m_NetEvent = NetEvent.Instance;
public NetworkManager NetworkManager;
/// <summary>
/// 获取网络频道数量。
@@ -20,14 +21,42 @@ namespace TEngine.Runtime
{
get
{
if (m_NetworkManager == null)
{
return 0;
}
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();
NetworkManager = m_NetworkManager as NetworkManager;
if (m_NetworkManager == null)
{
Log.Fatal("Network manager is invalid.");
@@ -39,12 +68,8 @@ namespace TEngine.Runtime
m_NetworkManager.NetworkMissHeartBeat += OnNetworkMissHeartBeat;
m_NetworkManager.NetworkError += OnNetworkError;
m_NetworkManager.NetworkCustomError += OnNetworkCustomError;
}
protected override void OnLoad()
{
base.OnLoad();
if (m_NetEvent == null)
if (NetEvent.Instance == null)
{
Log.Fatal("Event component is invalid.");
return;
@@ -113,27 +138,27 @@ namespace TEngine.Runtime
private void OnNetworkConnected(object sender, NetworkConnectedEventArgs e)
{
m_NetEvent.Fire(this, e);
NetEvent.Instance.Fire(this, 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)
{
m_NetEvent.Fire(this, e);
NetEvent.Instance.Fire(this, 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)
{
m_NetEvent.Fire(this, e);
NetEvent.Instance.Fire(this, e);
}
}
}