김김김의 게임개발
  • 유니티 게임개발 입문 #9
    2023년 09월 14일 20시 44분 31초에 업로드 된 글입니다.
    작성자: noun06

    유틸리티 UI

    • 테스트하면서 느낀 불편함을 해소하기 위해 다음과 같은 몇가지 UI를 추가함. 게임 도중 일시정지 하고 재시작 혹은 홈으로 나갈 수 있는 퍼즈 버튼과 스테이지에서 시작 화면으로 이동할 수 있는 뒤로가기 버튼 등이 있음.
    //UIPauseCanvas.cs
    
    public class UIPauseCanvas : MonoBehaviour
    {
        [SerializeField] private Button _pauseBtn;
        [SerializeField] private Button _closeBtn;
        [SerializeField] private Button _homeBtn;
        [SerializeField] private Button _retryBtn;
        [SerializeField] private GameObject _pauseMenu;
        private bool isPaused = false;
    
        private void Awake()
        {
            _pauseBtn.onClick.AddListener(() => { PauseGame(true); });
            _closeBtn.onClick.AddListener(() => { PauseGame(false); });
            _homeBtn.onClick.AddListener(() => { GameManager.Instance.GoHome(); });
            _retryBtn.onClick.AddListener(() => { GameManager.Instance.RetryGame(); });
        }
    
        private void PauseGame(bool isActive)
        {
            if(isActive)
            {
                Time.timeScale = 0f;
                _pauseMenu.SetActive(isActive);
                _pauseBtn.gameObject.SetActive(false);
            }
            else
            {
                Time.timeScale = 1f;
                _pauseMenu.SetActive(isActive);
                _pauseBtn.gameObject.SetActive(true);
            }
        }
    }

     

    WebGL 빌드

    • 웹 빌드 테스트를 진행하였음. 다음과 같은 각종 에러들이 발생하였음.
    •  The type or namespace name 'UnityEditorInternal' could not be found
    • The type or namespace name 'Progress' does not exist in the namespace 'UnityEditor'
    • 이런 에러들은 불필요한 using 네임스페이스로 인해 일어남. 간단하게 말하면 유니티 에디터에서만 사용이 가능한 네임스페이스들을 가지고 빌드를 시도하면 실패함. 그러므로 빌드 전에는 사용하지 않는 using 들을 지워야함.

     

    • 빌드에 성공하고 깃헙IO를 통해 웹에서 유니티게임을 실행시켰을 때 다음과 같은 에러가 발생했음.
    • Unable to parse Build/build.framework.js.br
    • 이 에러는 사실 빌드 프로세스 중에 JavaScript 파일을 압축하거나 인코딩할 때 문제가 발생한 것임. 그리므로 빌드 전에 유니티 에디터의 Player settings > Player > Publishing settings 중 Compression Format을 disabled로 바꿨더니 동작하긴함. 하지만 부작용으로 압축이 안되서 리소스가 커져 게임 성능이 저하될 것으로 보임. 이 부분은 추후에 더 자세히 살펴보아야 할듯함. 

     

    • 마지막으로 해상도 문제인데, 사실 게임이 모바일 비율 기준으로 제작되어서 웹에서 띄워지는 디폴트 게임 캔버스와 해상도가 달라서 게임이 다 깨짐. 이 부분은 UI를 반응형으로 고치거나 웹 해상도를 기준으로 제작하거나 할 수 있지만 일단 나는 기본 html에서 캔버스 자체의 캔버스 크기를 모바일 사이즈로 임의로 고침.

     

    여기서 이 게임을 즐길 수 있음.

    https://nwjwifh.github.io/

     

    Unity WebGL Player | Annihilation

     

    nwjwifh.github.io

     

    기타 에러

    • 그리고 유니티 에디터 상에서 새로운 에러를 발견했는데 사실 원인은 잘 모르겠음.
    • Invalid editor window UnityEditor.FallbackEditorWindow
    • MissingReferenceException: The object of type 'DockArea' has been destroyed but you are still trying to access it.
    • GUI Error: You are pushing more GUIClips than you are popping. Make sure they are balanced.
    • 에디터 윈도우와 플레이 모드 진입 관련 에러인데 Window > Layouts를 다른걸로 설정하고 다시 돌리니까 사라짐..
    댓글