언리얼 정리 1(프로젝트 구성, 액터, 컴포넌트)

윤준혁·2025년 3월 6일

언리얼 프로젝트 폴더 구성

  • Config 폴더 : 프로젝트의 설정 값을 보관하는 폴더(삭제하면 안 됨)
  • Content 폴더 : 프로젝트에서 사용하는 애셋(모델, 텍스처 등)을 관리하는 폴더(삭제하면 안 됨)
  • Intermediate 폴더 : 프로젝트 관리에 필요한 임시 파일 저장(삭제 가능, 자동 재생성)
  • Saved 폴더 : 작업 중 생성된 결과물 저장 (예: 세이브 파일, 스크린샷)(삭제 가능)
  • Binaries 폴더 : C++ 코드가 컴파일된 실행 파일(EXE) 저장(삭제 가능, 빌드시 재생성)
  • Source 폴더 : C++ 소스 코드 및 빌드 설정을 담은 C# 파일 존재(삭제하면 안 됨)
  • .sln 파일 : 비주얼 스튜디오 솔루션 파일(C++ 프로젝트를 관리하기 위한 파일)

Config, Content, Source는 삭제하면 안 되고, Intermediate, Saved, Binaries는 필요할 때 삭제 가능

C++ 프로젝트 빌드 구성

  • DebugGame : 디버깅을 위한 최적화되지 않은 빌드 (EXE 생성)
  • DebugGame : Editor DebugGame과 동일한 수준의 에디터용 DLL 파일 생성
  • Development : 중간 수준 최적화 및 디버깅이 가능한 빌드 (EXE 생성)
  • Development Editor : Development과 동일한 수준의 에디터용 DLL 파일 생성 (기본값)
  • Shipping : 최종 배포용 빌드. 최적화된 코드 (EXE 생성)

Editor가 붙으면 에디터용 DLL을 생성.
Shipping은 최적화된 배포용 빌드.
기본값은 Development Editor.

월드(World)

  • 월드는 언리얼 엔진에서 게임 컨텐츠를 구동하기 위한 필수적인 환경을 의미하며 다음과 같은 요소로 구성된다
    • 공간(Space) : 3D 좌표계를 기반으로 게임 오브젝트를 배치하는 영역(단위: cm)
    • 시간(Time) : 게임 내 시간 흐름을 제어할 수 있음(시간 스케일 조절 가능)
    • 물리(Physics) : 물체에 적용되는 물리 환경(콜리전 필요)
    • 렌더링(Rendering) : 언리얼 엔진의 물리 기반 렌더링 시스템(PBR) 사용

액터(Actor)

  • 언리얼 엔진에서 모든 오브젝트의 최소 단위이며, 다음과 같은 요소로 구성된다
    • 이름(Name) : 액터의 고유한 명칭 (여러 액터가 같은 이름을 가질 수도 있음).
    • 유형(Type) : 액터의 클래스 유형 (예: ACharacter, AStaticMeshActor).
    • 트랜스폼(Transform) : 액터의 위치, 회전, 크기를 정의.
    • 프로퍼티(Property) : 액터의 속성 값 (디테일 창에서 편집 가능).
    • 게임 로직(Game Logic) : C++ 또는 블루프린트로 동작 정의.

액터의 주요 기능 3가지
1. 시각적 기능 : 플레이어에게 어떻게 보여질 것인가?
2. 물리적 기능 : 액터의 이동과 충돌을 어떻게 처리할 것인가?
3. 움직임 : 액터가 어떻게 이동할 것인가?

언리얼 엔진의 주요 컴포넌트

  • 액터는 컴포넌트를 통해 여러 기능을 조합할 수 있다
    • taticMesh : 애니메이션 없는 모델 (건물, 배경 오브젝트 등)
    • SkeletalMesh : 애니메이션이 있는 모델 (캐릭터, 몬스터 등)
    • Collision : 충돌 판정을 위한 컴포넌트 (시각적 기능 없음)
    • Camera : 화면에 현재 장면을 출력하는 기능
    • Audio : 소리 출력 기능
    • Particle System : 이펙트(불꽃, 연기, 폭발 등) 표현
    • Light : 광원 효과 추가 (전구, 태양광 등)
    • Movement : 액터의 이동을 제어

언리얼 오브젝트와 메모리 관리

  • 언리얼 엔진은 객체가 더 이상 사용되지 않으면 자동으로 메모리를 해제하는 기능을 제공
  • 자동으로 관리하게 만들려면 코드에서 UPROPERTY라는 매크로를 사용해 객체를 지정해줘야 한다
  • 모든 객체가 자동으로 관리되는 것은 아니고 언리얼 오브젝트만 가능하다

    UPROPERTY 매크로 구문 내에서 사용하는 키워드 값들은 언리얼 실행 환경에 명령을 내리고자 언리얼 엔진에서 지정한 문법이다

UPROPERTY 매크로 키워드

  • VisibleAnywhere : 에디터에서 보이지만 수정불가
  • VisibleDefaultsOnly : 디폴트 값(클래스 디폴트)에서만 보이지만 수정 불가
  • VisibleInstanceOnly : 인스턴스에서만 보이지만 수정 불가
  • EditAnywhere : 에디터에서 수정 가능
  • EditDefaultsOnly : 클래스 디폴트에서만 수정 가능(인스턴스에서는 수정 불가)
  • EditInstanceOnly : 인스턴스에서만 수정 가능(클래스 디폴트에서는 수정 불가)
  • BlueprintReadWrite : 블루프린트에서 읽기/쓰기 가능
  • BlueprintReadOnly : 블루프린트에서 읽기 가능, 수정 불가
  • AllowPrivateAccess : 변수 데이터를 캡슐화(프로그래밍에서 보호)

언리얼 오브젝트를 만들기 위한 4가지 규칙

  1. 클래스 선언 매크로 : UCLASS()와 GENERATED_BODY() 선언
  2. 클래스 접두사 : A -> 액터 클래스, U -> 액터가 아닌 클래스
  3. generated.h 헤더 포함 : 자동 생성된 언리얼 관련 코드 필요
  4. 외부 모듈 공개 여부 : 모듈명_API 키워드 추가(ex: MyProject_API)

0개의 댓글