This commit is contained in:
2026-04-30 01:30:58 +07:00
parent a8d268c42b
commit 68dd336d00
3 changed files with 27 additions and 42 deletions

View File

@@ -38,19 +38,23 @@ namespace Hallucinate.UI
private async Task EnsureRunnerExists()
{
if (_runner != null)
if (_runner == null)
{
// Nếu runner cũ vẫn đang chạy hoặc lỗi, dọn dẹp nó
await _runner.Shutdown();
if (_runner != null && _runner.gameObject != null)
{
Destroy(_runner);
}
_runner = null;
_runner = GetComponent<NetworkRunner>();
}
if (_runner != null && _runner.IsRunning)
{
await _runner.Shutdown();
}
if (_runner == null)
{
_runner = gameObject.AddComponent<NetworkRunner>();
}
_runner = gameObject.AddComponent<NetworkRunner>();
_runner.ProvideInput = true;
_runner.RemoveCallbacks(this);
_runner.AddCallbacks(this);
}
@@ -186,12 +190,17 @@ namespace Hallucinate.UI
{
runner.Despawn(networkObject);
_spawnedCharacters.Remove(player);
if (runner.IsServer) runner.Shutdown();
// Chỉ Shutdown nếu người thoát chính là Server (Host)
if (runner.IsServer && player == runner.LocalPlayer)
{
runner.Shutdown();
}
}
}
public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason)
{
Debug.LogWarning($"[Fusion] Shutdown occurred. Reason: {shutdownReason}");
OnShutdownEvent?.Invoke(shutdownReason.ToString());
}