.
월드가 제공하는 필수 요소.
공간, 시간, 물리, 렌더링
그 외의 다양한 기능들은 툴바의 세팅 > 월드 세팅
액터의 구성 요소
이름, 유형, 트랜스폼
프로퍼티, 게임 로직 (C++, 블루프린트)
컴포넌트
액터의 주요 기능 세 가지.
시각적 기능, 물리적 기능, 움직임
액터를 설계할 때 컴포넌트를 조합. 액터는 여러 개의 컴포넌트를 가질 수 있음. 그 중 대표 컴포넌트를 반드시 지정해야 함. (루트 컴포넌트)
주요 컴포넌트
스태틱메시 컴포넌트
스켈레탈메시 ,,
콜리전 ,,
카메라 ,,
오디오 ,,
파티클 시스템 ,,
라이트 ,,
무브먼트 ,,
분수대 샘플.
액터가 두 개의 스태틱메시 컴포넌트를 가지려면 멤버 변수로 두 개의 UStaticMeshComponent 클래스의 포인터를 선언해줘야.
#include “CoreMinimal.h” 대신 #include “EngineMinimal.h” 파일로 변경.
언리얼 4.15부터 IWYU(Include What You Use)방식.
단, 예제에서는 엔진 클래스의 모든 선언을 모아둔 EngineMinimal.h 를 사용.
언리얼 오브젝트 멤버변수 위에 UPROPERTY() 선언해야 메모리 관리 됨.
비주얼 스튜디오에서 UPROPERTY 메크로 쓰고 엔터치면 들여쓰기가 됨. 확장 도구 설치로 해결.
어떤 C++클래스가 언리얼 오브젝트 클래스가 되려면 클래스 선언에 엔진 규칙에 부합해야.
클래스 선언 매크로 : UCLASS() / GENERATED_BODY()
클래스 이름 접두사 : 언리얼 오브젝트는 규칙에 맞는 접두어. A는 액터 클래스에 사용. U는 액터가 아닌 클래스에 사용
generated.h 헤더 파일 : 컴파일 과정에 엔진이 생성하기 때문에 마지막 #include 구문에 헤더 선언 해야함.
외부 모듈에의 공개 여부 : DLL 에서 외부에 공개 여부를 _declspec(dllexport) 키워드를 제공. 언리얼 엔진에서 이 키워드 사용은 “모듈명_API” 키워드를 클래스 선언 앞에 추가. 이 키워드가 없으면 다른 모듈에서 객체에 접근 못함.
생성자 코드에서 컴포넌트 생성은 new가 아닌 CreateDefaultSubojbect() 함수 API로 생성.
Body = CreateDefaultSubobject<UStaticMeshComponent>(TEXT(“BODY”));
루트 컴포넌트 지정해줘야 함.
RootComponent = Body;
Water->SetupAttachment(Body);
핫리로드 동작으로 만들어진 새로운 모듈들은 언리얼 에디터를 완전히 종료하고 컴파일 수행 시 임시 모듈들은 자동으로 제거.
컴포넌트를 에디터에서 수정하려면 UPROPERTY( VisibleAnywhere ) 키워드 추가 필요.
단, 속성의 값을 수정하려면 UPROPERTY( EditAnywhere, Category=ID)
uint8, float, FString, FVector 등의 값 유형들.
FVector() 클래스 등의 F 접두사는 언리얼 오브젝트와 관련 없는 일반 C++클래스/구조체를 의미.
C++ 코드에서 애셋 불러오기
ContructorHelpers::FObjectFinder<TypeName> AssetObj(TEXT(“...AssetPath...”));
AssetPath = {오브젝트 타입}’{폴더명}/{파일명}.{애셋명}’
ex) StaticMesh’/Game/MyGame/GameMesh.GameMesh’
if (AssetObj.Succeeded())
{
Component->SetStaticMesh(AssetObj.Object);
}
애셋 결로 정보는 게임 실행 중 변경될 일이 없기 때문에 static 으로 생성해서 한 번만 초기화 하는 것이 바람직.
static ConstructorHelpers::FObjectFinder<UStaticMesh> SM_GAMEMESH(TEXT(“/Game/MyGame/GameMesh.GameMesh”));
역시 디테일한 설명들은 여러권을 봐야, 저자마다 집중하는 부분이 달라서 모르던 걸 알게되는 것 같습니다. 또 뭐 놓치는 게 있진 않을까 싶어서 다른 입문책도 보고싶어지네요.
https://wonsorang.tistory.com/609?category=850073
.
.
.
'Unreal 엔진' 카테고리의 다른 글
[이득우의 언리얼 C++] 챕터3 움직이는 액터의 제작 (0) | 2019.12.07 |
---|---|
[UE] 언리얼 Visual Studio 구성 셋팅, 플러그인 (0) | 2019.12.02 |
[UE/Err] 'GetRandomPointInNavigableRadius': is not a member of 'UNavigationSystemBase' (0) | 2019.11.24 |
[이득우의 언리얼 C++] 챕터1 개발 환경 설정 (0) | 2019.11.19 |
[UE] 솔루션 파일이 없을 때 "Could not find code file, ~.sln" (0) | 2019.10.30 |
언리얼엔진4 in 24Hours - 3~4Hours (0) | 2019.10.15 |
[Unreal] 프로그래밍 퀵 스타트 (Programming Quick Start) (0) | 2019.09.29 |