1 minute read

작업 내용

유닛 도감 UI 사이즈 조절 안되는 문제

유닛 도감(목록)이 화면 사이즈가 바뀌면 사이즈 조절이 안되는 문제가 있었다.
스크린샷 2024-08-07 185743
켄버스의 사이즈를 화면 크기에 따라 바뀌게 설정을 해놨기 때문에 문제가 없어야하는데, 이상하게 유닛 목록이 화면 크기가 작아져도 크기가 줄어들지 않았다.
인터넷에 아무리 찾아봐도 답이 없었는데 혹시나해서 유닛 목록 prefab을 오브젝트로 생성할 때 parent transform을 생성 함수에 붙여줘 보았다.
그랬더니 사이즈가 조절이 되었다. 다음은 UnitDictionaryManager 클래스이다.

// 컨텐츠 오브젝트 생성
GameObject gameObject = Instantiate(dictionaryContent.gameObject, parentContent);
DictionaryUnit dict = gameObject.GetComponent<DictionaryUnit>();

기존에는 Instantiate하고 나서 parent의 tranform을 설정해주었는데, 그러니까 자동 사이즈 조절이 감지를 못한 모양이다.
이전에는 생성시에 parent할당과 생성 후 parent할당의 차이를 몰랐는데 이제는 생성시에 할당하는 것이 좋다는 것을 배웠다.

몇가지 버그 수정

개발을 하는 동안 화면 사이즈를 1920*1080으로 맞춰두고 하다 보니 UI같은 것의 사이즈가 안맞는 부분을 놓치고 있었다.
그래서 극단적인 테스트를 위해 Game 화면에 사이즈를 760 * 1080의 휴대폰 사이즈로 바꾸고 게임을 돌려보았다.
그랬더니 일단 UI간에 순서가 잘못되어 팝업창이 배경 UI의 뒤로 생성되는 오류가 있어 이 순서를 바꿔주었다.
그리고 우리가 게임씬은 수정을 다 했는데 튜토리얼 씬은 이 게임씬을 복제했지만 단계별 학습을 위해 조금 다르게 세팅되어있었고 여기도 똑같이 수정을 해주어야했다.
하지만 유닛과 같은 경우는 해금된 유닛을 모두 쓰는 게임과 달리 튜토리얼은 기본유닛 궁수와 보병 2가지만 쓸 수 있다.
그래서 튜토리얼 시작시 잠깐 해금된 유닛을 궁수와 보병으로만 바꾸고 튜토리얼에서 나갈 때 되돌려주었다.
저장은 특정 지점에서만 일어나고 튜토리얼 중에는 저장이 일어나지 않기에 데이터 오염 걱정은 없다.
TutorialManager 클래스 :

protected override void Awake()
{
    base.Awake();

    // 생산 가능 유닛 일시적으로 제한
    OriginalUnitList = DataManager.Instance.UserUnitIDs.ToArray();
    DataManager.Instance.UserUnitIDs = UsableUnitIDs;
}

public void ExitTutorial()
{
    // 생산 가능 유닛 복구
    DataManager.Instance.UserUnitIDs = OriginalUnitList.ToList<int>(); 
    SceneManager.LoadScene(0);
}

그리고 튜토리얼에서도 유닛 sprite를 가져올 수 있게 세팅해주는 등 기본적인 작업도 해두었다.

크레딧 제작

게임 만든 팀원 명단과 에셋 판매자들 이름을 넣은 크레딧을 만들고 만드는김에 메인메뉴 UI를 좀 더 구별하기 좋게 바꿔보았다.
내가 디자인을 하는 사람은 아니라 나름 선택하는데 시간이 걸렸다.
스크린샷 2024-08-07 190912
UI가 정확하게 버튼용으로 나온 것 같지는 않아서 구별은 되게 했는데 보는 사람에 따라 마음에 안들 수도 있을 것 같다.
크레딧은 단순히 그리드 레이아웃 그룹으로 제목과 이름들을 정렬했다.

마무리

오늘은 복잡한 코딩은 없었지만 게임 유저테스트를 다음주에 진행하기에 잔버그들과 마지막으로 필요한 내용들을 작업했다.
이전에는 해상도나 화면 사이즈가 바뀌면 UI가 다 망가질까봐 걱정을 하긴 했는데, UI 앵커를 쓰는법을 알기에 이를 평소에 버릇처럼 잘 썼어서 그런가 거의 문제가 없었다.
다음주까지 유저테스트를 진행하기 위해 게임이 게임다운 모습이 되고 치명적인 버그를 모두 해결해야할텐데 걱정도 되지만 당장은 잘 되어가는 것 같아 기대도 된다.