Unity Canvas HUD
Written by JesusLuvsYooh / StephenAllenGames.co.uk
End Result:

Part 1


Part 2


Part 3

Part 4

Part 5



Part 6

Part 7
Last updated
Written by JesusLuvsYooh / StephenAllenGames.co.uk











Last updated
using Mirror;
using UnityEngine;
using UnityEngine.UI;
public class CanvasHUD : MonoBehaviour
{
public Button buttonHost;
public void Start()
{
buttonHost.onClick.AddListener(ButtonHost);
}
public void ButtonHost()
{
NetworkManager.singleton.StartHost();
}
}public GameObject PanelStart;
public GameObject PanelStop;
public Button buttonHost, buttonServer, buttonClient, buttonStop;
public InputField inputFieldAddress;
public Text serverText;
public Text clientText;
private void Start()
{
//Update the canvas text if you have manually changed network managers address from the game object before starting the game scene
if (NetworkManager.singleton.networkAddress != "localhost") { inputFieldAddress.text = NetworkManager.singleton.networkAddress; }
//Adds a listener to the main input field and invokes a method when the value changes.
inputFieldAddress.onValueChanged.AddListener(delegate { ValueChangeCheck(); });
//Make sure to attach these Buttons in the Inspector
buttonHost.onClick.AddListener(ButtonHost);
buttonServer.onClick.AddListener(ButtonServer);
buttonClient.onClick.AddListener(ButtonClient);
buttonStop.onClick.AddListener(ButtonStop);
//This updates the Unity canvas, we have to manually call it every change, unlike legacy OnGUI.
SetupCanvas();
}
// Invoked when the value of the text field changes.
public void ValueChangeCheck()
{
NetworkManager.singleton.networkAddress = inputFieldAddress.text;
}
public void ButtonHost()
{
NetworkManager.singleton.StartHost();
SetupCanvas();
}
public void ButtonServer()
{
NetworkManager.singleton.StartServer();
SetupCanvas();
}
public void ButtonClient()
{
NetworkManager.singleton.StartClient();
SetupCanvas();
}
public void ButtonStop()
{
// stop host if host mode
if (NetworkServer.active && NetworkClient.isConnected)
{
NetworkManager.singleton.StopHost();
}
// stop client if client-only
else if (NetworkClient.isConnected)
{
NetworkManager.singleton.StopClient();
}
// stop server if server-only
else if (NetworkServer.active)
{
NetworkManager.singleton.StopServer();
}
SetupCanvas();
}
public void SetupCanvas()
{
// Here we will dump majority of the canvas UI that may be changed.
if (!NetworkClient.isConnected && !NetworkServer.active)
{
if (NetworkClient.active)
{
PanelStart.SetActive(false);
PanelStop.SetActive(true);
clientText.text = "Connecting to " + NetworkManager.singleton.networkAddress + "..";
}
else
{
PanelStart.SetActive(true);
PanelStop.SetActive(false);
}
}
else
{
PanelStart.SetActive(false);
PanelStop.SetActive(true);
// server / client status message
if (NetworkServer.active)
{
serverText.text = "Server: active. Transport: " + Transport.active;
// Note, older mirror versions use: Transport.activeTransport
}
if (NetworkClient.isConnected)
{
clientText.text = "Client: address=" + NetworkManager.singleton.networkAddress;
}
}
}