Unreal

[Unreal] 3월 26일 수업정리

k-codestudy 2025. 3. 26. 14:05

오브젝트 (Object)

  • 언리얼에서 가장 기본적인 클래스
  • 보통 상속을 통해 확장하거나, 컴포넌트(Component) 를 조립하여 기능을 추가함
  • 오브젝트 자체를 직접 사용하는 경우는 거의 없음
  • 엑터(Actor)와 달리 3D 공간상의 위치 정보를 가지지 않음

엑터 (Actor)

  • 3D 공간상에 좌표를 가지는 존재
  • 모든 배치(Placement)되거나 스폰(Spawn) 가능한 객체는 엑터로 감싸져 있음
  • 엑터는 컴포넌트를 붙여서 다양한 기능을 추가 가능

  • 빌보드(Billboard): 2D 스프라이트인데, 어느 방향에서 보든 항상 카메라를 바라보는 요소

  • BeginPlay(): 엑터가 레벨에 배치되거나 스폰될 때 한 번 호출되는 함수 (늦은 초기화 개념)

폰 (Pawn)

  • 입력(키보드, 마우스 등)과 조작이 가능한 최소 단위
  • 엑터를 상속받으며, 컨트롤러(Controller)를 부착하여 조작할 수 있음
  • 엑터는 컨트롤러를 가질 수 없으며, 조작이 필요하면 폰을 상속받아야 함

한 번에 하나의 컨트롤러만 부착 가능

  • 플레이어 컨트롤러 (PlayerController) → 사용자가 조작
  • AI 컨트롤러 (AIController) → AI가 조작

캐릭터 (Character)

  • 폰(Pawn)의 확장형으로, "걷는 기능"을 기본적으로 포함
  • 자동으로 CharacterMovementComponent 가 추가되어 있어, 중력 적용 및 점프 기능, 지형에 맞춰 이동하는 기능 제공
  • 걷기, 점프 등이 필요한 경우 캐릭터를 사용해야 하며, 단순한 오브젝트 이동이라면 Pawn을 사용해도 됨

플레이어 컨트롤러 (PlayerController)

  • 플레이어의 입력을 받아 처리하는 클래스
  • 키보드, 마우스, 게임패드 입력을 받아 폰(Pawn)이나 캐릭터(Character)를 조작
  • 한 개의 플레이어 컨트롤러는 한 개의 폰만 조작 가능

게임 모드 베이스 (GameModeBase)

  • 게임의 환경 및 룰을 관리하는 클래스
  • 기본적으로 존재하며, 필요하면 교체하여 사용 가능
  • 주로 게임이 시작될 때 어떤 폰을 사용할지, 몇 명이 참여할 수 있는지 등을 설정

액터 컴포넌트 (Actor Component)

  • 독립적으로 기능을 추가할 수 있는 컴포넌트
  • 엑터에 부착하여 기능(Logic) 추가 가능
  • 단, 위치 정보가 없음 (Transform을 가질 수 없음)

씬 컴포넌트 (Scene Component)

  • 위치(Transform)를 가질 수 있는 컴포넌트
  • StaticMeshComponent, CameraComponent 같은 그래픽 요소 관련 컴포넌트의 부모 클래스

기본적으로 DefaultSceneRoot 가 씬 컴포넌트로 설정됨 (암기)

  • 삭제하거나 다른 컴포넌트를 루트로 변경하지 말 것
  • 루트 좌표계를 기준으로 하위 컴포넌트를 배치하면 외부 물리력의 영향을 방지할 수 있음
  • 만약 다른 컴포넌트를 루트로 설정하게 되면 물리력을 먹어 오류 발

 

언리얼 블루프린트 관련 개념

  • 인터페이스: C++에서의 인터페이스 개념과 동일
  • 함수 라이브러리: 전역 함수를 제공하는 기능
  • 블루프린트 클래스: 일반적인 클래스 개념과 동일
  • 열거형(enum): 데이터 그룹을 정의하는 열거형 타입

이벤트 그래프 (Event Graph)

  • 블루프린트에서 이벤트를 처리하는 그래프 기반의 스크립팅 공간
  • 불투명한 노드는 부모 클래스에서 정의된 이벤트 (Override 안 됨) -> 일을 하지 않은것 
  • 색이 있는 노드는 부모 이벤트를 오버라이딩한 것 (Override 됨) -> 일을 한것 
  • 그렇기에 혼동하지 말것

이벤트 디스패처 (Event Dispatcher)

  • C++의 델리게이트(Delegate), 즉 함수 포인터와 유사한 개념
  • 이벤트를 정의하고 다른 객체에서 바인딩하여 실행 가능

기타 개념 정리

  • () 안에 대상이 들어가면 -> 해당 대상이 이벤트의 주체가 됨
    예: OnHit(AActor* HitActor, ...) → HitActor가 충돌한 대상

  • 허공에서 우클릭 -> 자기 자신에게 명령을 내리는 "Self" 기능 

언리얼 엔진 특징 및 주의점

뷰포트(Viewport)

  • 게임 화면을 보여주는 영역

컨스트럭션 스크립트 (Construction Script)

  • 블루프린트에서 생성자 역할을 수행
  • 게임 실행 전에 실행됨

액터 속성 조작

  • 수정을 가하지 않은 블루프린트를 창을 삭제후 다시 창을 키게 되면 입장가능
  • 엑터를 선택하고 디테일 패널에서 변수 값 변경 가능
  • 상속한 경우, 디테일 패널을 활용하면 코드를 수정하지 않고도 변수 조정 가능
  • 단, 블루프린트 수정이 한 번이라도 이루어지면 수동 변경이 적용되지 않을 수 있음

변수 및 네이밍 규칙

헝가리안 표기법 문제

  • 보통 블루프린트에서는 BP_ 접두사를 붙여 사용하지만, "_" 언더스코어가 스페이스로 변환되는 문제 발생
  • 대체 방법으로 "-" 하이픈을 사용 가능
  • 단, C++에서는 하이픈 사용 불가하므로 네이밍에 주의해야 함

 

실습 

스태틱 매쉬에 플레이어가 부딪히게 되면 삭제되는 간단한 실습

'Unreal' 카테고리의 다른 글

[Unreal] 3월 28일 수업정리  (0) 2025.03.28
[Unreal] 3월 27일 수업정리  (0) 2025.03.27
[Unreal] 3월 25일 수업정리  (0) 2025.03.25
[Unreal] 3월 24일 수업정리  (0) 2025.03.24
[Unreal] 3월 21일 수업정리  (0) 2025.03.21