您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
72 行
2.4 KiB
72 行
2.4 KiB
using System;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using Unity.Netcode;
|
|
using Unity.Netcode.Transports.UTP;
|
|
using UnityEngine.Assertions;
|
|
|
|
|
|
namespace Unity.Multiplayer.Samples.BossRoom.Editor
|
|
{
|
|
public class NetworkLatencyWarning : MonoBehaviour
|
|
{
|
|
TextMeshProUGUI m_LatencyText;
|
|
bool m_LatencyTextCreated;
|
|
|
|
Color m_TextColor = Color.red;
|
|
|
|
bool m_ArtificialLatencyEnabled;
|
|
|
|
void Update()
|
|
{
|
|
if (NetworkManager.Singleton != null && (NetworkManager.Singleton.IsClient || NetworkManager.Singleton.IsServer))
|
|
{
|
|
var unityTransport = (UnityTransport)NetworkManager.Singleton.NetworkConfig.NetworkTransport;
|
|
|
|
// adding this preprocessor directive check since UnityTransport's simulator tools only inject latency in #UNITY_EDITOR or in #DEVELOPMENT_BUILD
|
|
#if UNITY_EDITOR || DEVELOPMENT_BUILD
|
|
var simulatorParameters = unityTransport.DebugSimulator;
|
|
m_ArtificialLatencyEnabled = simulatorParameters.PacketDelayMS > 0 ||
|
|
simulatorParameters.PacketJitterMS > 0 ||
|
|
simulatorParameters.PacketDropRate > 0;
|
|
#else
|
|
m_ArtificialLatencyEnabled = false;
|
|
#endif
|
|
|
|
if (m_ArtificialLatencyEnabled)
|
|
{
|
|
if (!m_LatencyTextCreated)
|
|
{
|
|
m_LatencyTextCreated = true;
|
|
CreateLatencyText();
|
|
}
|
|
|
|
m_TextColor.a = Mathf.PingPong(Time.time, 1f);
|
|
m_LatencyText.color = m_TextColor;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_ArtificialLatencyEnabled = false;
|
|
}
|
|
|
|
if (!m_ArtificialLatencyEnabled)
|
|
{
|
|
if (m_LatencyTextCreated)
|
|
{
|
|
m_LatencyTextCreated = false;
|
|
Destroy(m_LatencyText);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Creating a UI text object and add it to NetworkOverlay canvas
|
|
void CreateLatencyText()
|
|
{
|
|
Assert.IsNotNull(NetworkOverlay.Instance,
|
|
"No NetworkOverlay object part of scene. Add NetworkOverlay prefab to bootstrap scene!");
|
|
|
|
NetworkOverlay.Instance.AddTextToUI("UI Latency Warning Text", "Network Latency Enabled", out m_LatencyText);
|
|
}
|
|
}
|
|
}
|