Contents
접기
728x90
오늘은 게임플레이 중 ESC와 Tab 입력이 서로 간섭하지 않도록 인벤토리와 세팅창을 깔끔하게 제어하는 방법을 정리했다.
문제 상황
- ESC → 세팅창 열기/닫기
- Tab → 인벤토리 열기/닫기
하지만 ESC로 인벤토리를 닫으면 같은 프레임에서 세팅창이 열리거나, 세팅창이 켜져 있어도 Tab으로 인벤토리가 열리는 문제가 발생했다.
해결 방법
핵심은 각 UI가 켜져 있는 상태에서는 다른 UI 입력을 무시하는 것이다
이를 위해 각 매니저 스크립트에 IsOpen 속성을 만들어 상태를 확인하도록 했다.
SettingsManager 수정
public bool IsSettingsOpen
{
get { return _settingsUI != null && _settingsUI.activeSelf; }
}
void Update()
{
// 인벤토리가 켜져 있으면 세팅창 열기 무시
if (InventoryManager.Instance != null && InventoryManager.Instance.IsInventoryOpen)
return;
if (Input.GetKeyDown(KeyCode.Escape))
{
bool willOpen = !_settingsUI.activeSelf;
_settingsUI.SetActive(willOpen);
// 켜질 때 게임 멈춤, 꺼질 때 재개
Time.timeScale = willOpen ? 0f : 1f;
}
}
- IsSettingsOpen : 세팅창 열림 여부 확인
- Time.timeScale : 세팅창 켜질 때 게임 일시정지, 꺼질 때 재개
PlayerController에서 Tab 입력 제어
if (Input.GetKeyDown(KeyCode.Tab))
{
// 세팅창이 켜져 있으면 인벤토리 열기 무시
if (SettingsManager.Instance != null && SettingsManager.Instance.IsSettingsOpen)
return;
InventoryManager.Instance.TogleUI();
}
세팅창이 켜져 있을 때는 인벤토리 토글 동작을 건너뛰도록 조건 추가
InventoryManager의 IsInventoryOpen
public bool IsInventoryOpen
{
get { return _root != null && _root.activeSelf; }
}
세팅창에서 ESC 처리 시 인벤토리가 켜져 있으면 무시하도록 사용
결과
✅ 인벤토리와 세팅창이 동시에 켜지는 문제 해결
✅ ESC / Tab 입력 간섭 없이 동작
✅ 세팅창 켜질 때 게임이 멈추고, 꺼질 때 재개됨
728x90
'GameDevelop > Unity팀프로젝트' 카테고리의 다른 글
[Unity] 포탈 근처에 [V] 프롬프트 UI 띄우기 + 입력 처리 (1) | 2025.08.07 |
---|---|
여러 오브젝트가 각각 말풍선을 띄울 때 싱글톤 쓰면 안 되는 이유 (1) | 2025.08.04 |
Unity Master Audio로 맵별 배경음악 자동 변경하기 (6) | 2025.08.01 |
유니티 말풍선 따라다니기 구현 (TextAnimator + SpeechBubble) (1) | 2025.07.31 |
Unity | 플레이어 위치에 따라 따라오는 '핀치새' 구현하기 (1) | 2025.07.30 |