분류 전체보기 294

[UE4] TSet의 KeyFuncs 사용하여 구조체 키를 사용는 방법

TSet의 KeyFuncs 사용하여 구조체 키를 사용는 방법을 알아 보겠습니다. TSet의 Syntax이며 두 번째 파라미터가 KeyFuncs입니다. template class TSet 먼저 간단한 구조체를 정의합니다. USTRUCT() struct FMyStruct { GENERATED_BODY() FMyStruct() : Name(""), SomeFloat(0.f) {} FMyStruct(FString name, float someFloat) : Name(name), SomeFloat(someFloat) {} UPROPERTY() FString Name; UPROPERTY() float SomeFloat; }; BaseKeyFuncs를 부모로하는 FMyStuct를 위한 KeyFuncs를 구현합니다. ..

[UE4] TMap의 KeyFuncs 사용하여 구조체 키를 사용는 방법

TMap의 KeyFuncs 사용하여 구조체 키를 사용는 방법을 알아 보겠습니다. TMap의 Syntax이며 마지막 파라미터가 KeyFuncs입니다. template class TMap : public TSortableMapBase 먼저 간단한 구조체를 정의합니다. USTRUCT() struct FMyStruct { GENERATED_BODY() FMyStruct() : Name(""), SomeFloat(0.f) {} FMyStruct(FString name, float someFloat) : Name(name), SomeFloat(someFloat) {} UPROPERTY() FString Name; UPROPERTY()..

[UE4] TMap, TSet의 Key 값으로서 구조체를 사용 방법

TMap, TSet의 Key 값으로서 커스텀 구조체를 사용하는 방법을 알아 보겠습니다. 먼저 간단한 커스텀 구조체를 정의합니다. USTRUCT() struct FMyStruct { GENERATED_BODY() FMyStruct() : Key(""), SomeFloat(0.f) {} FMyStruct(FString key, float someFloat) : Key(key), SomeFloat(someFloat) {} UPROPERTY() FString Key; UPROPERTY() float SomeFloat; }; TMap의 키로 구조체를 사용하려면, 이 구조체에 operator==와 구조체 멤버가 아닌 GetTypeHash 오버로드가 있어야 합니다. 이 두가지를 구현하여 구조체를 확장합니다. // H..

[UE4] Aimation Montage Play가 동작하지 않는 경우 해결

Anim Blueprint의 노드에 Montage Slot이 추가 되었는지 확인하여 없다면 추가해 주면 해결 됩니다. 다음의 블루프린트와 같이 Animation Montage가 플레이되도록 호출하였지만 아무런 일도 일어 나지 않을 경우, Animation Blueprint의 AnimGraph에 Montage Slot이 추가 되었는지 확인해주어야 겠습니다. 추가 되어 있지 않다면 다음과 같이 Slot을 추가하여 연결 시켜 주면 해결됩니다. 다음과 같이 Slot을 추가하니 정상적으로 플레이가 되었습니다. Anim Montage사용 방법은 다음의 페이지를 참고해 주세요. https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/A..

[UE4] 어셋 이름 규칙(Asset naming conversion)

일반적인 이름 규칙들 [AssetTypePrefix]_[AssetName]_[Descriptor]_[OptionalVariantLetterOrNumber] 접두어 General Asset Prefix HDRI HDR_ Material M_ Material Instance MI_ Physics Asset PHYS_ Physics Material PM_ Post Process Material PPM_ Skeletal Mesh SK_ Static Mesh SM_ Texture T_ OCIO Profile OCIO_ Blueprints Asset Prefix Actor Component AC_ Animation Blueprint ABP_ Blueprint Interface BI_ Blueprint BP_ Cur..

[UE4] UClass, UFunction, UProperty, UEnum UInterface 메타데이터 지정자

메타데이터 지정자 메타데이터 지정자를 사용하려면, UCLASS, UINTERFACE, UFUNCTION, UPROPERTY 매크로에 다음과 같이 meta 를 붙이면 됩니다: {UCLASS/UINTERFACE/USTRUCT/UFUNCTION/UPROPERTY}(meta=(MetaTag1="Value1", MetaTag2, ..)) 자세한 내용은 다음의 글을 참고 합시다. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/GameplayArchitecture/Metadata/ 메타데이터 지정자 Metadata 키워드는 UClass, UFunction, UProperty, UEnum, UInterface 를 선언할 때 사용되며, 엔진 및 에디터 다양..

[UE4] Assertion - DO_CHECK, DO_GUARD_SLOW, DO_ENSURE

Runtime\Core\Public\Misc\Build.h  DO_GUARD_SLOW 1이면,checkSlow, checkfSlow, verifySlow 실행DO_CHECK 1이면,checkCode, checkf, verify, check, checkNoEntry, checkNoReentry, checkNoRecursion, verifyf, checkf 실행DO_ENSURE 1이면, ensure, ensureAlways, ensureMsgf, ensureAlwaysMsgf 실행  DEBUGDEVELOPMENTTESTSHIPPING SHIPPING EDITORDO_GUARD_SLOW10000DO_CHECK11001DO_ENSURE11001  Build.h에 정의된 코드를 같추려 보면 다음과 같습니다.#de..

[UE4] Assertion 이해하기

Assertion 이해하기 Assertion 코드가 런타임에 실행될때 코드가 원하는 대로 동작하는지 검증하는 도구입니다. 언리얼 엔진은 어려가지 유형의 커스텀 검증 매크로들을 제공합니다. 특정 빌드 환경설정 하에서는 컴파일시 제외시킬 수 있도록 매크로로 되어 있는데, 퍼포먼스 상의 이유거나 최종 빌드에서는 필요치 않기 때문이거나 입니다. 검증 종류 런타임 어서트 매크로는 실행 중지(DO_GUARD_SLOW) checkSlow, checkfSlow, verifySlow 디버그 빌드에서 실행 중지(DO_CHECK) checkCode, checkf, verify, check, checkNoEntry, checkNoReentry, checkNoRecursion, verifyf, checkf 실행 중지하지 않고 ..

[UE4] Enum을 문자로 변환(EnumToString)

다음과 같이 enum이 정의 되어 있고 문자열로 출력하는 방법을 알아 봅시다. UENUM(BlueprintType) enum class ELocomotionState : uint8 { Idle UMETA(DisplayName = "Idle"), Walk UMETA(DisplayName = "Walk"), Jog UMETA(DisplayName = "Jog"), Sprint UMETA(DisplayName = "Sprint"), }; 여러 방법이 있지만 다음의 코드가 가장 간단한 방법입니다. DEFINE_ENUM_TO_STRING 매크로를 작성이후 EnumToString 함수 호출하여 FString으로 출력합니다. DEFINE_ENUM_TO_STRING(ELocomotionState); ... ELocom..