UI, Coroutine

유승아·2024년 6월 14일

내일배움캠프

목록 보기
57/69

1. UI

1) UGUI (Unity's User Interface)

  • Unity의 기본 UI 시스템으로 게임 내의 사용자 인터페이스를 구축하는 데 사용된다.

2) Canvas

  • UGUI에서 모든 UI 요소는 Canvas라는 컴포넌트 내에 배치된다.
  • 스크린 오버레이, 카메라 오버레이, 월드 공간의 3가지 렌더 모드를 지원한다.

✔️ 렌더링 모드

  • Screen Space - Screen Overlay
    • 카메라 설정이나 월드의 변화에 상관 없이 독립적으로 화면 위에 렌더링한다.
    • 즉, 무조건 UI를 제일 위에 평면으로 그리는 모드
  • Screen Space - Camera Overlay
    • 특정한 카메라가 실제 평면을 찍고 있는 것처럼 그린다.
    • Order in Layer에 따라 그려지지 않을 수도 있다.
  • World Space
    • 몬스터의 HP처럼, 실제 게임오브젝트처럼 UI를 올릴 수 있다.

3) Rect Transform

  • UI 요소에는 Rect Transform이 사용된다.
  • 위치, 크기, 회전, 스케일을 지정하는데 사용되며,
    앵커 및 피벗을 사용하여 부모와의 상대적인 위치를 지정한다.

✔️ 앵커와 피벗

  • 앵커
    UI 요소의 위치가 어떻게 부모 요소에 대해 정의되는지를 결정한다.
    UI 요소가 화면의 다양한 해상도와 크기에 동적으로 적응할 수 있도록 해준다.

    • 위치 지정
      부모의 좌하단을 (0, 0), 우상단을 (1,1)로 하는 것을 기준으로 하고 있으므로 비율이 달라지면서 어떻게 처리해야될 지를 예상하고 설계해야 한다.
    • 스트레치 모드
      UI 요소가 부모의 특정 방향(가로, 세로 또는 둘 다)으로 꽉 차도록 확장된다. 스트레치 모드는 앵커 포인트를 사용하여 UI 요소가 화면의 다양한 크기에 맞게 유연하게 조정되도록 한다.
  • 피벗
    오브젝트 자체가 크기가 변하거나 회전할 때 어떻게 변화해야될 지를 정의한다.

    • 크기 변화
      UI가 변형될 때 (예: 확장, 축소) 중심이 되는 점을 정의한다.

2. 코루틴(Coroutine)

하나의 작업을 여러 개의 프레임에 분산할 때 사용
→ 비동기적인 흐름

  • 코루틴의 활용
    • IEnumerator 리턴 타입의 함수에서 yield return을 사용하여 코루틴을 구현할 수 있다.
    • StartCoroutine 함수를 통해 코루틴을 시작할 수 있고, StopCoroutine 함수를 통해 코루틴을 중지할 수 있다.
    • 코루틴은 프레임 간의 지연, 비동기 작업, 시간에 따른 애니메이션 등의 작업에 주로 사용된다.
    • yield return null은 다음 프레임까지 대기를 의미하고, yield return new WaitForSeconds(n)은 n초 동안 대기를 의미한다.
    • 코루틴은 별도의 스레드에서 실행되지 않는다.
      따라서 Unity의 메인 스레드에서 안전하게 Unity API를 호출할 수 있다.
    • 코루틴은 일반 함수와는 다르게, 실행을 일시 중단하고 나중에 다시 시작할 수 있어, 시간 지연, 반복, 조건부 대기 등의 작업을 수행할 때 매우 유용하다.

1) yield return

  • yield return new WaitForSeconds(float) : 입력한 초(sec) 만큼 대기
  • yield return new WaitFixedUpdate() : 다음 프레임의 FixedUpdate 까지 대기
  • yield return WaitUntil(조건) : 조건을 만족할 때까지 대기
  • yield return startCoroutiune(string) : 입력한 다른 코루틴이 끝날 때까지 대기
  • yield return new www(string) : 입력한 웹 통신 작업이 끝날 때까지 대기

0개의 댓글