본문 바로가기
다이어리/내일배움 개발일지

게임개발캠프 - 팀과제(D) 2일차

by E.Clone 2024. 2. 13.

과정명 : 내일배움캠프 Unity 게임개발 3기

전체진행도 : 34일차

부분진행도 : Chapter4.2 - 2일차

작성일자 : 2024.02.13(화)

개발일지 목록 : 클릭


1. 진행중인 과정에 대해

심화주차 팀 과제 2/5일차(발표날 포함)이다. 3D 플랫폼 퍼즐 게임을 만들고 있고, UI 전반 관리의 역할을 맡았다.

1일차에 준비 해 둔 UI요소들

1일차에 UI 요소들을 만들었는데, UI를 관리할 능력이 없어 관련 강의를 듣고 스크립트를 짜는 법을 대강이나마 배워왔다.

어설프지만 그렇게 만들어진 오늘의 스크립트들의 목록은 위와 같다. 아직 매끄럽지 못한 부분이 많아 계속 손보아야 하지만 시간이 부족하다. 뼈대는 어찌저찌 마련하였으니 이젠 원래 스타일대로 깡코딩으로 밀어붙일 차례인 듯 하다.

2. 오늘 학습에 대해

오늘은 코테준비 없이 UI작업을 계속하였다. 메모 해 둘 정도의 트러블슈팅은 없었고, 간단하게 배운 내용을 조금 정리.

게임이 로드 될 때 실행되는 특별한 메서드(유니티에서 지원)

Monobehaviour을 상속받는 Managers.cs에서 사용한 방법이다.

씬 위에 오브젝트와 컴포넌트를 배치하지 않더라고 게임이 로드 될 때 함께 메서드를 실행시켜주는 방법이 있었다.

// 게임이 로드될 때 자동으로 실행
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
static void OnBeforeSceneLoadRuntimeMethod() 
{
    Init();
}

게임 시작 시, Awake 실행 이전에 한번만 호출되는 함수이며, 나는 이 메서드에 Init()메서드를 두고, Init 메서드에서 @Managers 오브젝트의 생성과 그 안에 여러가지 Manager류 컴포넌트를 추가하는 방식을 사용하였다.

팝업의 배경에 IPointerClickHandler를 상속

팝업의 외부에 화면을 덮는 이미지를 만들어준 후(투명도는 자유, Raycast Target 옵션을 켜주어야 한다) 사용하면 좋고, 이 배경의 클릭 이벤트에 대응할 메서드를 버튼 컴포넌트 없이 쉽게 작성 할 수 있다.

public class BlockBG : MonoBehaviour, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        // BG 클릭 시, 가장 최근의 팝업을 지우기
        TempManagers.UI.ClosePopupUI();
    }
}

본인의 경우는 UIManager에서 팝업 관리 메서드 중 하나(닫기)를 사용했지만, 다른 방법으로도 쉽게 팝업을 닫던가 다른 행동을 할 수도 있다.

3. 과제에 대해

  • UI 빡세게 구현 진행하기... 당장 공부하기도 구현하기도 시간이 너무 부족하다.
반응형