This commit is contained in:
BoyongHwang
2026-02-25 23:28:14 +09:00

View File

@@ -45,9 +45,35 @@ namespace Northbound
// UI 체크 캐싱 (Input System 콜백 내에서 IsPointerOverGameObject() 사용 불가) // UI 체크 캐싱 (Input System 콜백 내에서 IsPointerOverGameObject() 사용 불가)
private bool _isPointerOverUI = false; private bool _isPointerOverUI = false;
// 플레이어 컨트롤러 참조 (로컬 플레이어 체크용)
private NetworkPlayerController _playerController;
private bool _isInitialized = false;
public override void OnNetworkSpawn() public override void OnNetworkSpawn()
{ {
if (!IsOwner) return; _playerController = GetComponent<NetworkPlayerController>();
// 지연 초기화 - 다음 프레임에 체크
StartCoroutine(InitializeAfterOwnerSet());
}
private System.Collections.IEnumerator InitializeAfterOwnerSet()
{
// _ownerPlayerId가 설정될 때까지 대기 (최대 1초)
float timeout = 1f;
while (_playerController != null && _playerController.OwnerPlayerId == ulong.MaxValue && timeout > 0)
{
yield return null;
timeout -= Time.deltaTime;
}
// 로컬 플레이어인지 확인
if (_playerController == null || !_playerController.IsLocalPlayer)
{
yield break;
}
_isInitialized = true;
_inputActions = new PlayerInputActions(); _inputActions = new PlayerInputActions();
_inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode; _inputActions.Player.ToggleBuildMode.performed += OnToggleBuildMode;
@@ -118,7 +144,7 @@ namespace Northbound
public override void OnNetworkDespawn() public override void OnNetworkDespawn()
{ {
if (IsOwner && _inputActions != null) if (_isInitialized && _inputActions != null)
{ {
_inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode; _inputActions.Player.ToggleBuildMode.performed -= OnToggleBuildMode;
_inputActions.Player.Rotate.performed -= OnRotate; _inputActions.Player.Rotate.performed -= OnRotate;
@@ -134,7 +160,7 @@ namespace Northbound
private void Update() private void Update()
{ {
if (!IsOwner) return; if (!_isInitialized) return;
// UI 체크 캐싱 (Input System 콜백 내에서 사용하기 위해) // UI 체크 캐싱 (Input System 콜백 내에서 사용하기 위해)
_isPointerOverUI = CheckPointerOverUI(); _isPointerOverUI = CheckPointerOverUI();