본문 바로가기

c++6

[UE4]enum을 string으로(C++) 로그 출력 등 디버깅 용도로 enum 값을 출력하고 싶을 때가 있다. 123456789FString APlayerCharacter::GetEStateAsString(EStateType EnumValue){ const UEnum* enumPtr = FindObject(ANY_PACKAGE, TEXT("EStateType"), true); if (!enumPtr) { return FString("Invalid"); } return enumPtr->GetNameStringByIndex((int32)EnumValue);}Colored by Color Scriptercs 이와 같이 쓰면 된다.enum은 blueprinttype으로 되있어야 한다. 참고로 4.16버전 이전에는 GetEnumName을 썼는데, 그 이.. 2018. 11. 24.
[UE4]GC에 의한 UObject 상속받은 객체 삭제 방지 클래스 안에서 UObject를 동적으로 생성하는 작업을 하다보면 가끔 플레이 도중 아무것도 안하고 있으면 0xFFFFFFFF와 같은 에러메세지와 함께 액세스 위반 에러가 뜬다. 콜 스택을 봐도 감이 안잡혀 짐작가는 바는 GC(Garbage collector)밖에 없었다. 해당되는 UObject를 AddToRoot 함수를 사용하여 GC에 의한 삭제를 방지할 수 있다. 예: MyObject->AddToRoot(); 2018. 11. 20.
[UE4]데칼 생성(스폰)(코드) 캐릭터가 공격할 때 공격 범위를 데칼로 표현해주고 싶었다. 데칼이 표면에 제대로 출력될 수 있도록 데칼의 사이즈와 Rotation 값을 잘 설정해주어야 한다. 데칼은 캐릭터에 하나 둬서 사이즈를 변경해가면서 써도 되지만 언리얼 엔진 특성상 FadeOut을 하면 사라지고 나서 Destroy되어 그냥 Spawn 시켜서 사용해보았다. 데칼생성은 UGameplayStatics의 SpawnDecalAtLocation을 이용하면 된다. 예제 123456789101112 FVector NewSize = FVector(64.0f, 80.0f, 64.0f); float BoxSize = AttackRangeBox->GetScaledBoxExtent().Y; FVector NewLocation = GetActorLocat.. 2018. 11. 13.
[UE4]코드 상에서 머티리얼 로드 1234#include "UObject/ConstructorHelpers.h" static ConstructorHelpers::FObjectFinder Material(TEXT("에디터 상에서 머티리얼 레퍼런스를 복사하면 해당 머티리얼의 경로를 가져올 수 있다"));cs 마우스 커서 데칼 로드 예제123456789101112 //Set Cursor Decal CursorToWorld = CreateDefaultSubobject("CursorToWorld"); CursorToWorld->SetupAttachment(RootComponent); { static ConstructorHelpers::FObjectFinder DecalMaterialAsset(TEXT("Material'/Game/Materials.. 2018. 11. 13.