처음 [Spacebar]를 이용해 UI를 열었을 때는 아래와 같이 UI가 잘 열렸다.
하지만 UI를 닫고 다시 [Spacebar]를 클릭하면
UI가 열리지 않았다.
처음에는 Debug.Log() 함수로 UI를 여는 함수 호출 부분을 확인해 봤다.
하지만 문제 없이 호출되고 있었다.
두 번째로 UI를 닫는 함수를 호출하는 부분에 로그를 찍었는데
CloseUIs()함수가 계속해서 호출되고 있었다.
하지만 CloseUIs() 함수가 호출되는 경우는 UI의 [X]버튼을 눌렀을 때 말고 호출되지 않는다.
CloseUIs()함수가 어디서 호출되는지 확인하기 위해서System.Environment.StackTrace속성을 이용했다.
처음 버튼을 클릭해서 UI를 닫았을 때 Debug.Log()가 1번 호출되고
그 이후에 [Spacebar]를 클릭하면 CloseUIs()가 호출이 되는 것을 보고 Debug 내용을 확인해 봤다.
처음 [X]를 클릭했을 때 OnPointerClick()을 통해 호출되고 이후에 OnSubmit()으로 계속해서 호출되고 있었다.
Spacebar를 누르면 UI가 열리면서 이전에 눌렀던 CloseButton이 자동으로 선택되어 OnSubmit()으로 CloseUIs()가 호출됐던 것이다.
그래서 UI가 닫힐 때 자동 선택을 해제하는 구문을 추가해서 UI가 자동으로 닫히는 문제를 해결했다.
나와 같은 오류를 겪은 아래 글을 참고 했다.
https://discussions.unity.com/t/how-to-change-selected-button-in-eventsystem-or-deselect-it/128688