Game !

 

 

 

 

 

 

CreateDefaultSubObject<T>("str")

> 템플릿 자료형 클래스를 매개변수로 받은 string 이름으로 생성(인스턴스)한 후 반환하는 함수 (포인터 반환)

- 변수 이름이 BP의 컴포넌트 하이어라키에 표시되는 이름이다.

cf. 왜 Sub 일까?

생성자에서 오브젝트를 생성할 때는 A라는 언리얼 오브젝트(멤버 변수)가 초기화를 위해, B라는 언리얼 오브젝트(임시 객체)를 생성할 때.. B는 A의 서브 오브젝트 라고 한다.

--> 따라서 생성자 코드에서 언리얼 오브젝트의 인스턴스를 생성하고 관리하고자 할 때 함수 이름이 CreateDefaultSubObject 이다

 

 

 

RootComponent 변수

> 더미이다. 상징적인 의미로 사용된다. 이후에 생성되는 컴포넌트들의 Tr 기준점이 된다.

- 이후에 생성되는 컴포넌트들은 Root 로 지정한 컴포넌트의 자식으로 생성됨.

(- 별도로 지정하지 않으면 제일 먼저 인스턴스한 컴포넌트가 자동으로 Root 가 되는 듯.)

 

 

 

verifyf 함수

> 개발 중에 오류가 났을 때 오류값 체크 (에디터상에서 사용)

- 실제 서비스할 때는 실행되지 않음

 

 

 

TSubclassOf<T> : 기본적으로 TSub 클래스 가 포인터이다.

> 해당 자료형 전방선언. 자료형의 타입을 변수로 다룰 수 있게 해주는 기능 (리플렉션)

- T 자료형 상속받은 클래스만 사용할 수 있게 제한

- UClassc 일 경우, 언리얼 모든 클래스 가능​

 

 

 

UMaterialInstanceConstant

> 상수 머터리얼 인스턴스. 에디터에서만 매개 변수를 변경할 수 있다.

> 언리얼 에디터의 Material Instance 가 C++ 에서는 해당 자료형으로 표현된다.

( 언리얼 에디터의 Material 이랑 Material Instance 에서 Material Instance )

 

 

UMaterialInstanceDynamic

> 런타임 중에 매개 변수를 변경할 수 있는 인스턴스

 

 

UMaterialInstanceDynamic:: Create( ) 함수

> 동적 머테리얼을 생성할 경우 사용. 

- 주로 에디터의 (UMaterialInstanceConstant) Material Instance 를 가져와서 C++ 에서 동적으로 생성하는 방식으로 사용된다.

( Material 과 관련된 클래스는 전부 UMaterialInterface 로부터 상속받아 구현되어진다. )

 

 

UMaterialInstanceDynamic:: SetVectorParameterValue( ) 함수

> 머테리얼에서 칼라는 Vector 값으로 표현되는데, 칼라 파라미터를 변경하겠다는 것

 

 

▼ 머터리얼과 머터리얼 인스턴스의 관계

더보기

BP 에서..

값을 고정으로 사용하고 싶으면 : Constant 노드 사용

값을 변경해서 사용하고 싶으면 : Parameter 노드 사용

 

Parameter 의 값을 변경할 때는 독립적이라는 의미로 Material Instance 를 생성해야한다.

▶ Material Instance 는 UMaterialInstanceConstant 자료형을 가진다

( 동일한 Material 을 사용하는 A, B 오브젝트가 있을 때.. A 의 색을 변경했는데 B 의 색까지 바뀔 필요는 없기 때문이다. 그래서 Material Instance 를 생성해서 A 의 Material Instance 의 Paremeter 값만 변경해주면 된다. )

 

그니까..

머터리얼 데이터는 똑같이 쓰는데, 그 값만 서로 다르게 쓰고싶으니까 Inst 로 분리해서 사용하는 거임

 

 

 

UKismetSystemLibrary

> 타이머 정보가 있다.

 

UKismetMathLibrary

> 랜덤 정보가 있다.

 

 

 

(Component)->SetupAttachment(parent)

> 컴포넌트를 부모의 자식으로 붙이는 함수

- Componenet 를 parent 의 자식으로 붙이겠다.

 

 

 

SetRelativeLocation(FVector)

SetRelativeRotation(FRotator)

> 해당 컴포넌트의 Transform 기본값을 설정할 수 있다. 

 

 

 

SpringArm:: bDoCollisionTest

> 카메라가 벽에 닿으면 충돌 계산을 통해 카메라와 캐릭터의 거리를 좁혀 카메라가 벽을 뚫지 않게 할 것인지? 여부

 

 

 

SpringArm:: bUsePawnControlRotation

> 폰의 카메라 회전을 제어할 것인지? 여부
- false 일 경우 회전 허용 안함. relative rotation 값으로 고정
- true 일 경우 회전을 허용

 

 

▼ 카메라에 붙는 SpringArm 의 역할 (SpringArmComponent)

더보기

Spring Arm 은 카메라가 이동하면서 유연한 느낌으로 따라붙을 수 있게 도와준다.

 

카메라가 무언가 ( 다른 오브젝트) 에 방해를 받을 때는 카메라 위치를 자동으로 옮겼다가

더 이상 방해를 받지 않게되면 원래 위치로 되돌려주는 등 부작용을 최소화 시키는데 도와준다.

 

ex1. 카메라가 이동 시 약간의 시차를 두고 이동하기

ex2. 벽 근처에서 카메라를 회전시키면 자동으로 위치를 조정해서 가까이 오기,

이런 상황이 해제되면 원래대로 돌아오기

 

 

 

UCharacterMovementComponent:: bOrientRotationToMovement

> 이동할 때, 가속되고 있는 값 방향으로 캐릭터 메쉬를 회전시킬 것인지? 여부

- true 일 경우 : 캐릭터가 가속값을 가지고 있다면, 가속되고 있는 값 방향으로 캐릭터 메쉬를 회전시킨다.

- false 일 경우 : 키 입력을 받아도 캐릭터 메쉬가 회전하지 않는다. (가속하는 방향으로 캐릭터가 회전하지 않는다)

> OrientRotation 뜻 : 방향 회전 

 

 

 

ConstructorHelpers 클래스

> 생성자에 도움될 클래스들을 모아두는 곳

 

ConstructorHelpers:: FObjectFinder<T>

> Asset의 내용물을 가져올 때 사용 (= Asset 자체를 가져올 때 사용)

- 생성자에서만 사용 가능.

 

ConstructorHelpers:: FClassFinder<T> 

> Asset의 타입 정보를 가져올 때 사용 (= Asset 타입을 가져올 때 사용)

- 하나의 언리얼 프로젝트는 UClass와 CDO로 나뉘어지는데, UClass 관련 타입을 찾는다.

(- 생성자에서만 사용 가능한듯?)

 

 

 

StaticLoadObject 함수

> 기능은 ConstructorHelpers::FObjectFinder 와 동일. 생성자가 아닌 곳에서 동적 로딩을 해주는 함수이다.

- 반환형이 UObject (최상위 Object 자료형) 이므로 내가 사용할 자료형을 캐스팅해서 사용하면 된다.

 

 

 

UInputComponent:: BindAxis
> 입력 방향키 설정. GameMode 에서 설정한 Key 이름이랑 함수를 매칭시킨다.

 

 

 

APawn:: GetControlRotation

> 컨트롤러의 Rotation 을 반환한다.

> 절대축 기준 회전값을 반환하며, 0 ~ 360 사이 각도 리턴 (절대축 기준으로 플레이어가 얼마나 회전했는지)

- ControlRotation : 플레이어 조작 시 회전을 기준으로 약속

 

GetControlRotation().Quaternion().Euler()
> 컨트롤러의 Rotation 을 반환한다. 절대축 기준 회전값을 반환하며, -180 ~ 180 사이 각도 리턴

 

 

 

GetActorRotation( )

> 액터의 RootComponent 회전값을 반환

 

 

 

FVector:: GetUnsafeNormal2D
> 벡터의 노말을 구하는 함수. 안전하지 않아서 unsafe 인듯.

 

 

 

APawn:: AddMovementInput
> 폰을 이동시키는 함수

 

APawn:: AddControllerYawInput
> 마우스를 이동시키는 함수 (Yaw 는 좌우 이동)

 

 

 

(APawn::)

bUseControllerRotationRoll = false

bUseControllerRotationPitch = false

bUseControllerRotationYaw = false

> 캐릭터가 카메라의 회전을 따라서 회전하지 않도록 한다.

> true 일 경우 : 카메라의 회전값에 따라서 캐릭터도 같이 회전한다

 

 

 

DEFINE_LOG_CATEGORY_STATIC

> 에디터 로그 출력창에 표시할 때, 해당 매크로를 통해 로그 카테고리를 설정할 수 있다.

 

 

 

APawn:: TryGetPawnOwner

> 나(오브젝트 또는 컴포넌트)를 포함하고 있는 주인 폰을 반환한다.

 

 

 

Engine/World.h

> UWorld 를 가지고 있는 헤더파일. 월드는 여러 개 존재할 수 있는데 보통 1개인듯

> 직역 : UWorld 는 컴포넌트를 가진 액터를 렌더링하는 맵이나 샌드박스를 나타내는 최상위 객체

 

GetWorld( )-> GetTimeSeconds( )

> 게임을 시작한 후 현재까지 경과된 시간

 

GetWorld( )-> GetRealTimeSeconds( )

> 현실 세계의 경과 시간

 

 

 

IsBound

> 델리게이트에 함수가 하나라도 연결되어 있는지 체크

 

 

 

UPointLightComponent

> Light 를 보일지 말지 여부

- 생성자일 경우 : bVisible 변수로 셋팅

- 생성자가 아닐 경우 : SetVisibility( ) 함수로 셋팅

 

> 빛의 강도 설정 : Intensity

- 1e + 4f = 10^4 = 10000

- 1e - 6f = 10^-6 = 0.000001

( 언리얼이나 C++ 에서 많이 쓰는 표기 방법 )

 

 

 

FLinearColor

> 부동소수점 컬러 범주 ( 0.0f ~ 1.0f )

 

FColor

> RGB 컬러 범주 ( 0 ~ 255 )

 

 

 

TArray

> 가변형 배열. C++ STL 의 Vector 와 유사하다

 

 

 

UGameplayStatics

> BP 와 C++ 모두에서 접근할 수 있는 정적 클래스. 유용한 게임플레이 유틸리티 함수가 있다.

- GetAllActorsOfClass : 지정한 클래스를 가진 모든 액터를 찾는다. 월드에서.. 

 

 

 

UPrimitiveComponent:: SetSimulatePhysics( )

> 물리 시뮬레이션 (자유낙하) 을 적용할 것인지? 셋팅

- 자유낙하 : 만유인력을 받아 인정한 가속도로 떨어지는 운동 (ex. 공 떨어뜨리기)

 

 

 

USceneComponent:: GetComponentToWorld( )

> 해당 컴포넌트를 가진 액터의.. 월드 기반 Transform 정보를 가져온다

 

 

 

UGameplayStatics:: SpawnEmitterAtLocation( world, particle, transform )

> 특정 좌표에 파티클을 생성한다. 

 

 

 

AttachToComponent

> 호출하는 대상이 parent componenet 의 특정 소켓에 붙는다

- FAttachmentTransformRules(EAttachmentRule:: , bool) : 부착 규칙

 

 

 

UWorld:: SpawnActor

> 특정 월드에 해당 액터를 스폰한다.

 

FActorSpawnParameters

> SpawnActor 함수에 전달되는 매개변수 구조체 ( 유니티에서 선택적 구조체로 넘기는 param[] 와 같은 개념 )

- 유니티 param[] 은 명시적 변환을 통해 원하는 클래스나 자료형을 넘길 수 있지만

- FActorSpawnParameters 는 보낼 수 있는 구조체 정보들이 정해져있음

 

 

 

AActor:: GetOwner

> 이 액터를 소유한 주인 액터를 반환.

 

 

 

(SpringArm::) SocketOffset 

> 스프링 암 끝의 카메라의 위치를 조정

ex)

SpringArm->SocketOffset = FVector(0, 30, 10);      // 오른쪽 방향 앞 쪽

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Unreal C++' 카테고리의 다른 글

[UE] USceneComponent 와 PrimitiveComponent  (0) 2022.05.09
[UE] 델리게이트와 이벤트  (0) 2022.05.09
[UE] Unreal C++ 스크립트 규칙  (0) 2022.05.07
[UE] 언리얼 오브젝트와 UClass  (0) 2022.05.01
[UE] 리플렉션  (0) 2022.04.30