네트워크 멀티플레이 환경 문제 수정

관련 문제가 다시 발생하면 이 커밋으로 돌아올 것
This commit is contained in:
2026-02-02 04:24:14 +09:00
parent 3e747a9d97
commit 10b496dfae
49 changed files with 2860 additions and 1792 deletions

View File

@@ -0,0 +1,86 @@
using System.Collections;
using UnityEngine;
using Unity.Netcode;
using Northbound;
public class NetworkDebug : MonoBehaviour
{
private void Start()
{
Debug.Log("=== NETWORK DEBUG INFO ===");
// 1. NetworkManager 상태
if (NetworkManager.Singleton != null)
{
Debug.Log($"NetworkManager: IsServer={NetworkManager.Singleton.IsServer}, IsClient={NetworkManager.Singleton.IsClient}, IsHost={NetworkManager.Singleton.IsHost}");
}
// 2. 스폰 포인트 검색
PlayerSpawnPoint[] spawnPoints = FindObjectsByType<PlayerSpawnPoint>(FindObjectsSortMode.None);
Debug.Log($"PlayerSpawnPoints: Found {spawnPoints.Length} objects");
foreach (var sp in spawnPoints)
{
Debug.Log($" - {sp.name} at {sp.transform.position}, isAvailable={sp.isAvailable}, spawnIndex={sp.spawnIndex}");
}
// 3. NetworkConnectionHandler 확인
var connectionHandler = FindObjectOfType<NetworkConnectionHandler>();
if (connectionHandler != null)
{
Debug.Log($"NetworkConnectionHandler: spawnPoints.Count={connectionHandler.spawnPoints.Count}, findAuto={connectionHandler.findSpawnPointsAutomatically}");
}
// 4. NetworkSpawnManager 확인
var spawnManager = FindObjectOfType<Northbound.NetworkSpawnManager>();
if (spawnManager != null)
{
Debug.Log($"NetworkSpawnManager: spawnPoints.Count={spawnManager.spawnPoints.Count}, findAuto={spawnManager.findSpawnPointsAutomatically}");
}
// 플레이어가 스폰될 때까지 대기
StartCoroutine(CheckPlayerAfterSpawn());
}
private IEnumerator CheckPlayerAfterSpawn()
{
// 플레이어가 스폰될 때까지 최대 5초 대기
for (int i = 0; i < 50; i++)
{
yield return new WaitForSeconds(0.1f);
var players = GameObject.FindObjectsByType<NetworkPlayerController>(FindObjectsSortMode.None);
if (players != null && players.Length > 0)
{
Debug.Log($"Found {players.Length} player(s) - checking equipment...");
foreach (var playerCtrl in players)
{
Debug.Log($"Player found: {playerCtrl.name}, IsOwner={playerCtrl.IsOwner}");
var equipmentSocketOnPlayer = playerCtrl.GetComponent<Northbound.EquipmentSocket>();
var networkEquipSocketOnPlayer = playerCtrl.GetComponent<Northbound.NetworkEquipmentSocket>();
if (equipmentSocketOnPlayer != null)
Debug.Log($"Player has EquipmentSocket: YES");
else
Debug.LogWarning($"Player has EquipmentSocket: NO");
if (networkEquipSocketOnPlayer != null)
Debug.Log($"Player has NetworkEquipmentSocket: YES");
else
Debug.LogWarning($"Player has NetworkEquipmentSocket: NO");
}
Debug.Log("=== DEBUG INFO END ===");
yield break;
}
}
// 5초 후에도 플레이어가 없는지 확인
var finalCheck = GameObject.FindObjectsByType<NetworkPlayerController>(FindObjectsSortMode.None);
if (finalCheck == null || finalCheck.Length == 0)
{
Debug.LogWarning($"Player did not spawn within 5 seconds!");
}
}
}