using Sirenix.OdinInspector; using System.Collections; using System.Collections.Generic; using Unity.Netcode; using UnityEngine; using Zenject; public class ConnectionManager : NetworkBehaviour { [SerializeField] private NetworkManager networkManager; [Inject] [SerializeField] [ReadOnly] private GameManager gameManager; private void Start() { networkManager.OnClientConnectedCallback += OnClientConnectedCallback; networkManager.OnClientDisconnectCallback += OnClientDisconnectCallback; } private void OnClientConnectedCallback(ulong clientId) { Debug.Log($"Client-{clientId} is connected and can spawn {nameof(NetworkObject)}s."); if (networkManager.LocalClientId == clientId) { StartCoroutine(SpawnLocalPlayer()); } } private IEnumerator SpawnLocalPlayer() { yield return new WaitForEndOfFrame(); var playerObject = networkManager.LocalClient.PlayerObject; var player = playerObject.GetComponent(); player.gameManager = gameManager; gameManager.PlayerSpawnedOnNetwork(player); yield return null; } private void OnClientDisconnectCallback(ulong clientId) { Debug.Log($"Client-{clientId} is disconnected and can spawn {nameof(NetworkObject)}s."); if (networkManager.LocalClientId == clientId) { } } }