Game Dev Study Log

by ricale

취미로 하는 게임 개발 공부

강의 40,41강 수강

강의 수강: Unity Turn-Based Strategy Game: Intermediate C# Coding

40. UI Setup (02:36)

씬에 UI - Canvas 생성

  • Canvas Scaler
    • UI Scale Mode 에서 "Scale With Screen Size" 선택
    • Reference Resolution 은 1280x720 ㅡ Match 는 Height 1

Canvas 안에 UI - Image 생성

  • Rect Transform - 기준 위치를 Top Left 로 설정.
  • Pos X, Pos Y 도 적당한 수치 넣기

Image 는 테스트로 생성해봤던 것인지 다음 강의에서는 삭제되어있다.

41. Unit Action System UI (13:37)

Canvas 안에 UnitActionSystemUI 게임 객체 생성

  • Stretch 로 배치, 위치 크기 모두 0으로 설정 UnitActionSystemUI 안에 ActionButtonContainer 생성
  • Bottom Center 로 배치, 크기는 0으로, 위치는 하단으로
  • Grid Layout Group 컴포넌트를 붙여서 자식들 위치 지정 그 안에서 UI 버튼 prefab 을 만든 다음에 여러 개 배치
  • Outline, Shadow 컴포넌트 붙이고 폰트 스타일 바꾸면서 스타일 조정
  • 위치는 Left Top 인데, 부모가 Grid Layout Group 이라서 별 의미 없을 듯

이후 UnitActionSystemUI 에서 각 유닛이 선택될 때마다 가능한 액션 목록을 가져와 버튼을 동적으로 만드는 코드를 작성함.

눈여겨볼만한 코드는 공통 부모 클래스인 BaseAction 클래스를 사용해 액션 클래스들을 한 번에 다 가져와 사용하는 것과

baseActionArray = GetComponents<BaseAction>();

UnitActionSystemUI 에서 UnitActionSystemOnSelectedUnitChanged 를 활용하는 것과

private void Start()
{
    UnitActionSystem.Instance.OnSelectedUnitChanged += UnitActionSystem_OnSelectedUnitChanged;
    CreateUnitActionButtons();
}
private void UnitActionSystem_OnSelectedUnitChanged(object sender, EventArgs e)
{
    CreateUnitActionButtons();
}

BaseAction 에 적절한 abstract 함수를 만들어 사용하는 것

public abstract string GetActionName();

특히 마지막 코드는 앞으로도 클래스 상속을 제대로 활용할 것 같아서 기대가 크다.