1
- using System . Runtime . CompilerServices ;
2
1
using Unity . Multiplayer . Netcode ;
3
- using Unity . Multiplayer . Netcode . Transports . UNET ;
4
2
using UnityEngine ;
5
3
6
4
namespace TestProject . ManualTests
@@ -9,122 +7,46 @@ namespace TestProject.ManualTests
9
7
[ DisallowMultipleComponent ]
10
8
public class NetworkManagerHud : MonoBehaviour
11
9
{
12
- private NetworkManager m_NetworkManager ;
13
- private UNetTransport m_Transport ;
14
- private GUIStyle m_LabelTextStyle ;
15
-
16
- // This is needed to make the port field more convenient. GUILayout.TextField is very limited and we want to be able to clear the field entirely so we can't cache this as ushort.
17
- private string m_PortString ;
18
-
19
- public Vector2 DrawOffset = new Vector2 ( 10 , 10 ) ;
20
-
21
- public Color LabelColor = Color . black ;
22
-
23
- private void Awake ( )
24
- {
25
- // Only cache networking manager but not transport here because transport could change anytime.
26
- m_NetworkManager = GetComponent < NetworkManager > ( ) ;
27
- m_LabelTextStyle = new GUIStyle ( GUIStyle . none ) ;
28
- }
29
-
30
10
private void OnGUI ( )
31
11
{
32
- m_LabelTextStyle . normal . textColor = LabelColor ;
33
-
34
- m_Transport = ( UNetTransport ) m_NetworkManager . NetworkConfig . NetworkTransport ;
35
-
36
- if ( m_PortString == null )
12
+ GUILayout . BeginArea ( new Rect ( 10 , 10 , 300 , 300 ) ) ;
13
+
14
+ if ( ! NetworkManager . Singleton . IsClient && ! NetworkManager . Singleton . IsServer )
37
15
{
38
- m_PortString = m_Transport . ConnectPort . ToString ( ) ;
39
- }
40
-
41
- GUILayout . BeginArea ( new Rect ( DrawOffset , new Vector2 ( 200 , 200 ) ) ) ;
42
-
43
- if ( IsRunning ( m_NetworkManager ) )
44
- {
45
- DrawStatusGUI ( ) ;
16
+ StartButtons ( ) ;
46
17
}
47
18
else
48
19
{
49
- DrawConnectGUI ( ) ;
20
+ StatusLabels ( ) ;
50
21
}
51
22
52
23
GUILayout . EndArea ( ) ;
53
24
}
54
25
55
- private void DrawConnectGUI ( )
26
+ private static void StartButtons ( )
56
27
{
57
- GUILayout . BeginHorizontal ( ) ;
58
- GUILayout . Space ( 10 ) ;
59
- GUILayout . Label ( "Address" , m_LabelTextStyle ) ;
60
- GUILayout . Label ( "Port" , m_LabelTextStyle ) ;
61
-
62
- GUILayout . EndHorizontal ( ) ;
63
-
64
- GUILayout . BeginHorizontal ( ) ;
65
-
66
- m_Transport . ConnectAddress = GUILayout . TextField ( m_Transport . ConnectAddress ) ;
67
- m_PortString = GUILayout . TextField ( m_PortString ) ;
68
- if ( ushort . TryParse ( m_PortString , out ushort port ) )
28
+ if ( GUILayout . Button ( "Host" ) )
69
29
{
70
- m_Transport . ConnectPort = port ;
30
+ NetworkManager . Singleton . StartHost ( ) ;
71
31
}
72
-
73
- GUILayout . EndHorizontal ( ) ;
74
-
75
- if ( GUILayout . Button ( "Host (Server + Client)" ) )
32
+
33
+ if ( GUILayout . Button ( "Client" ) )
76
34
{
77
- m_NetworkManager . StartHost ( ) ;
35
+ NetworkManager . Singleton . StartClient ( ) ;
78
36
}
79
-
80
- GUILayout . BeginHorizontal ( ) ;
81
-
37
+
82
38
if ( GUILayout . Button ( "Server" ) )
83
39
{
84
- m_NetworkManager . StartServer ( ) ;
40
+ NetworkManager . Singleton . StartServer ( ) ;
85
41
}
86
-
87
- if ( GUILayout . Button ( "Client" ) )
88
- {
89
- m_NetworkManager . StartClient ( ) ;
90
- }
91
-
92
- GUILayout . EndHorizontal ( ) ;
93
42
}
94
43
95
- private void DrawStatusGUI ( )
44
+ private static void StatusLabels ( )
96
45
{
97
- if ( m_NetworkManager . IsServer )
98
- {
99
- var mode = m_NetworkManager . IsHost ? "Host" : "Server" ;
100
- GUILayout . Label ( $ "{ mode } active on port: { m_Transport . ConnectPort . ToString ( ) } ", m_LabelTextStyle ) ;
101
- }
102
- else
103
- {
104
- if ( m_NetworkManager . IsConnectedClient )
105
- {
106
- GUILayout . Label ( $ "Client connected { m_Transport . ConnectAddress } :{ m_Transport . ConnectPort . ToString ( ) } ", m_LabelTextStyle ) ;
107
- }
108
- }
46
+ var mode = NetworkManager . Singleton . IsHost ? "Host" : NetworkManager . Singleton . IsServer ? "Server" : "Client" ;
109
47
110
- if ( GUILayout . Button ( "Stop" ) )
111
- {
112
- if ( m_NetworkManager . IsHost )
113
- {
114
- m_NetworkManager . StopHost ( ) ;
115
- }
116
- else if ( m_NetworkManager . IsServer )
117
- {
118
- m_NetworkManager . StopServer ( ) ;
119
- }
120
- else if ( m_NetworkManager . IsClient )
121
- {
122
- m_NetworkManager . StopClient ( ) ;
123
- }
124
- }
48
+ GUILayout . Label ( $ "Transport: { NetworkManager . Singleton . NetworkConfig . NetworkTransport . GetType ( ) . Name } ") ;
49
+ GUILayout . Label ( $ "Mode: { mode } ") ;
125
50
}
126
-
127
- [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
128
- private bool IsRunning ( NetworkManager networkManager ) => networkManager . IsServer || networkManager . IsClient ;
129
51
}
130
52
}
0 commit comments