Unity 내일배움캠프 TIL 0918(2) | 코루틴 | 패턴 매칭

cheeseonrose·2023년 9월 18일
0

Unity 내일배움캠프

목록 보기
38/89
post-thumbnail

17강 사운드 컨트롤

AudioSource

  • 실제로 소리를 출력하는 담당
  • 보통 AudioListener는 카메라에 달려있음
    but 우리는 2D이므로 어디에 있든 소리가 들리게 설정
    3D 프로젝트에서는 위치에 따라 소리가 크게 들리거나 작게 들리도록 설정 가능

Static Method

  • Static 메서드는 Static 변수만 사용할 수 있음
  • 정적인 변수 instance를 통해서만 객체의 값을 가져올 수 있음
public static SoundManager instance;

public static void ChangeBackgroundMusic(AudioClip music)
{
	instance.musicAudioSource.Stop();
    instance.musicAudioSource.clip = music;
    instance.musicAudioSource.Play();
}



18강 UI 만들기

UGUI (Unity's User Interface)

  • 기본 UI 시스템으로, 게임 내의 사용자 인터페이스를 구축하는 데 사용됨
  • Canvas
    • UGUI 안에서 모든 UI 요소는 Canvas라는 컴포넌트 내에 배치됨
    • 스크린 공간, 월드 공간, 카메라 공간의 3가지 렌더 모드를 지원
    • Screen Space - Overlay
      • 캔버스가 씬 내부 아무곳에나 위치해도 게임 씬 전체를 덮는 형식으로 렌더링
      • 씬에 카메라가 아예 없어도 렌더링 됨
      • 스크린 크기가 조절되거나 해상도가 변경되면 캔버스는 여기에 맞춰서 자동으로 크기를 조절함
    • Screen Space - Camera
      • 카메라를 지정해 해당 카메라에서 일정 거리에 위치한 평면 오브젝트 위에 드로우되는 것처럼 렌더링
      • 카메라 절두체 내에 정확히 맞도록 항상 다시 스케일되므로, 거리에 따라 크기가 달라지지 않음
      • 씬 안의 오브젝트 중 UI 평면보다 카메라에 가까운 모든 오브젝트는 UI 앞에 렌더링
    • World Space
      - UI가 씬 안에 있는 평면 오브젝트인 것처럼 렌더링
      - Screen Space - Camera 와의 차이 : UI가 항상 카메라를 향하지는 않음
      - 화면에서의 캔버스 크기는 카메라의 뷰 각도와 카메라 거리에 따라 달라짐
      참고 Unity Documentation
      참고 Velog 코딩창고
  • Rect Transform
    • 기본 Transform 대신 UI 요소에 사용됨
    • 위치, 크기, 회전, 스케일을 지정하는 데 사용되며, 앵커 및 피봇을 사용하여 부모와의 상대적 위치를 지정
  • UI Components
    • 버튼, 이미지, 텍스트, 슬라이더, 스크롤 바 등
  • Event System
    • UI 상호작용을 관리
    • 마우스 클릭, 드래그, 키보드 입력 등


19강 로직 구현하기

코루틴 (Coroutine)

  • 비동기적으로 실행되는 함수
  • 특정 코드 블럭의 실행을 일시적으로 중지하고 다시 시작할 수 있게 해줌
  • IEnumerator 리턴 타입의 함수에서 yield return을 사용하여 구현
  • 프레임 간의 지연, 비동기 작업, 시간에 따른 애니메이션
  • yield return null : 다음 프레임까지의 대기
  • yield return new WaitForSeconds(n) : n초 동안 대기
  • 별도의 다른 Thread를 생성하여 실행하는 것이 아닌 Unity의 MainThread 내에서 구분점을 갖는 것
    -> 안전한 API 호출
  • yield return을 만나면 실행을 반환했다가 다시 돌아오게 됨
  • 아래 코드는 Update와 같은 동작을 함
IEnumerator StartNextWave()
{
	while (true)
    {
    	yield return null;
    }
}



20강 스텟 계산하기

패턴 매칭

  • C# 7.0부터 추가된 기능으로, 일치하는 패턴에 따라 코드를 실행
  • switch문을 이용하여 객체의 타입이나 값에 따라 처리를 다르게 할 수 있음
  • switch문과 함께 사용하면 코드 가독성을 높이고 유지보수성, 확장성, 유연성 ↑
  • 객체의 타입을 확인하거나 특정 조건을 충족하는지 확인하면서 동시에 변수에 값 할당 가능
  • case RangedAttackData_ : CurrentStats.attackSO가 RangedAttackData 타입일 경우 실행
switch (CurrentStats.attackSO)
{
	case RangedAttackData _:
    	ApplyRangedStats(operation, newModifier);
        break;
}



Max를 Min으로 잘못써서 화살이 안 날아가는 이 감자는.....
다른 분의 도움을 받아 화살을 날렸다고 한다.......

그래도 어찌저찌 2D 프로젝트 강의는 완강했따

3D는 언제 듣지...?

털썩 ㅇ<-<

끗 . , , . . .

0개의 댓글