Files
webRtc/Assets/Script/GlobalConfigSystem.cs

97 lines
2.3 KiB
C#
Raw Normal View History

2026-05-12 17:45:40 +08:00
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using Stary.Evo;
using UnityEngine;
public interface IGlobalConfigSystem : ISystem
{
public string GetConnectionId();
public void SetConnectionId(string connectionId);
public string GetConnectionName();
public void SetConnectionName(string connectionName);
public UniTaskVoid StartConnectionTime();
public string GetConnectionTime();
public void StopConnectionTime();
}
public class GlobalConfigSystem : AbstractSystem, IGlobalConfigSystem
{
private string _connectionId;
private string _connectionName;
private float _connectionTime;
private CancellationTokenSource _cts;
protected override void OnInit()
{
}
public override void Dispose()
{
}
public string GetConnectionId()
{
if (string.IsNullOrEmpty(_connectionId))
{
Debug.LogWarning("GlobalConfigSystem: GetConnectionId not set");
return "";
}
return _connectionId;
}
public void SetConnectionId(string connectionId)
{
_connectionId = connectionId;
}
public string GetConnectionName()
{
if (string.IsNullOrEmpty(_connectionName))
{
Debug.LogWarning("GlobalConfigSystem: GetConnectionName not set");
return "";
}
return _connectionName;
}
public void SetConnectionName(string connectionName)
{
_connectionName = connectionName;
}
public async UniTaskVoid StartConnectionTime()
{
_cts = new CancellationTokenSource();
_connectionTime = 0;
while (!_cts.IsCancellationRequested)
{
_connectionTime+=Time.deltaTime;
await UniTask.Yield(_cts.Token); // 等一帧,等价于 Update
}
}
public string GetConnectionTime()
{
int totalSeconds = (int)_connectionTime;
int hours = totalSeconds / 3600;
int minutes = totalSeconds % 3600 / 60;
int seconds = totalSeconds % 60;
return $"{hours:D2}:{minutes:D2}:{seconds:D2}";
}
public void StopConnectionTime()
{
_cts?.Cancel();
_cts?.Dispose();
_cts = null;
}
}