구글과 공식 API 문서를 가까이 하자.

 

[기타등등]

 

  • 플레이 도중 콘솔창(`)을 열고 show collision을 입력하면 콜리전 영역이 그려진다. 혹은 메시의 디테일 탭에서 [렌더링 - Hidden in Game] 체크를 풀어주면 플레이 도중에도 볼 수 있다
  • 애니메이션 노티파이는 블루프린트가 아니더라도 애니메이션 인스턴스에서 "AnimNotify_노티파이명" 으로 멤버 함수를 작성해두면 자동으로 실행된다.
  • FString에서 C스타일 문자열 타입(%s)을 얻으려면 역참조를 해야한다.
  • 발사체 전용 Movement 컴포넌트가 있다.

 

[Class]

 

TSubclassOf<>
UClass 유형의 안전성을 보장해주는 템플릿 클래스.
템플릿에 지정한 유형만 받을 수 있다.

https://docs.unrealengine.com/5.0/ko/typed-object-pointer-properties-in-unreal-engine/

 

 

[Property]

 

AutoPossessPlayer
레벨이 시작될 때나 폰이 생성될 때, 자동으로 폰을 소유해야 하는 플레이어 컨트롤러를 결정한다.

AutoPossessPlayer = EAutoReceiveInput::Player0;

 

[Method]

 

GetDeltaSeconds()
DeltaSeconds를 받아온다.

GetWorld()->GetDeltaSeconds()
// GetWorld()는 AActor에 오버라이딩 되어있다
// 만약 헤더파일을 포함해야 한다면 "Engine/World.h"

 

GetWorldTimerManager().SetTimer(타이머 핸들, 메소드, 간격, 반복 여부, 몇초간 실행할지)
일정 시간 뒤에 재생될 함수를 등록한다.

 

SpawnActor<>()
월드에 새로운 객체를 생성시킨다.
템플릿 타입에는 어떤 타입을 생성시킬지 알려주는것뿐이다.
그래서 해당 클래스의 생성자에서 메시를 생성시키지 않는 이상,
본질적으로는 보이지 않는 액터가 생성된다.
하지만 UClass 타입에 블루프린트 클래스를 넘겨준다면
블루프린트를 기반으로 새 객체를 만들어준다.

 

FMath::GetMappedRangeValueClamped(const Vector2D &InputRange,
    const Vector2D &OutputRange, const float Value);

Value를 InputRange 범위에 대해서 OutputRange 백분율로 반환해준다.
/* 예시 */
Vector2D Input(0.f, 600.f);
Vector2D Output(0.f, 1.f);
float Result = FMath::GetMappedRangeValueClamped(Input, Output, 150.f);
// Result : 0.25f

 

[UPROPERTY]

 

Category
디테일 탭에서 그룹화를 시켜주고 이름을 지정한다
'|' 로 구분하면 오른쪽이 왼쪽의 하위 분류로 들어간다

Catagory="Tag#1 | Tag#2"


meta
AllowPrivateAccess = "true" : private이라도 접근이 가능하게 한다
ClampMin = "0.0", ClampMax = "1.0" : 값을 0~1 사이로 제한한다
UIMin = "0.0", UIMax = "1.0" : 에디터 패널에서 값이 표시되는 비율을 설정한다
위: 둘다 0~1 아래: UI만 0~1

 

https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/GameplayArchitecture/Properties/Specifiers/

 

 

[UFUNCTION]

 

BlueprintPure
const 함수와 같다. 주로 getter에 사용된다

 

BlueprintCallable
블루프린트 그래프에서 호출이 가능하지만 수정이 불가능하다
주로 setter에 사용

 

BlueprintImplementableEvent
C++에서 정의 불가. 블루프린트에서 오버라이딩 함
예) 캐릭터가 아이템을 획득 시, 어떤 효과가 발동되는가에 관한 이벤트를 다양하게 만들어줌

 

BlueprintNativeEvent
BlueprintImplementableEvent와 다르게 C++에서 함수 바디 구현 가능
블루프린트에서도 오버라이드 가능
구현부 함수명 뒤에 _Implementaion을 반드시 붙여주어야 한다

https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/GameplayArchitecture/Properties/Specifiers/

 

[Object]

 

CreateDefaultSubobject<T>(TEXT(""));
액터의 컴포넌트들을 생성한다.
실제 레벨에서 스폰 될 때, 매 액터 객체마다 컴포넌트를 설정하는 비용을 줄일 수 있다.
생성자에서 하는 것이 좋다.

MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent"));

 

[Component]

 

SetupAttachment(부모 컴포넌트, 소켓 이름=None)
부모 컴포넌트의 자식 계층으로 설정한다.
소켓 이름을 지정한 경우 계층뿐만 아니라 소켓 위치로 원점이 정해진다.

MeshComponent->SetupAttachment(GetRootComponent());

 

AttachToComponent(부모 컴포넌트, 부착 규칙, 소켓 이름=None)
부모 컴포넌트의 자식 계층으로 설정한다.
소켓 이름을 지정한 경우 계층뿐만 아니라 소켓 위치로 원점이 정해진다.
생성자에서 사용하지 않는다.

 

[SpringArmComponent]

 

주로 카메라 컴포넌트의 부모로 설정한다.

장애물을 등지더라도 충돌처리가 이루어져서 카메라가 오브젝트를 뚫지 않는다.

 

 

bEnableCameraLag
true인 경우 카메라가 따라갈 때 딜레이를 준다.

SpringArm->bEnableCameraLag = true;

 

그 외의 속성과 메소드

https://docs.unrealengine.com/4.26/en-US/API/Runtime/Engine/GameFramework/USpringArmComponent/

 

 

'언리얼 엔진 > 정보' 카테고리의 다른 글

애니메이션 몽타주 재생 관련  (0) 2022.09.13
UMG와 관련된 내용들  (0) 2022.09.08
가비지 컬렉션  (0) 2022.09.06
액터의 수명 주기  (0) 2022.09.06
언리얼 참고 문서  (0) 2022.09.01

+ Recent posts