UnrealEngine 57

[UE4] TArray 퍼포먼스 최적화

https://www.unrealengine.com/ko/blog/optimizing-tarray-usage-for-performance?lang=ko Optimizing TArray Usage for Performance 언리얼 엔진에서 TArray 엘리먼트 유형별 크기가 동적으로 변하는 배열입니다. TArray 는 프로그래머에게 매우 편리하며, 코드베이스에 *많이* 사용됩니다. 하지만 미묘한 퍼포먼스 문제가 생길 수 www.unrealengine.com 압축된 메모리 공간에서 엄청 빠른 엘리먼트 반복처리를 원하는 경우, TArray 가 좋은 선택입니다. 하지만 코드를 작성하면서 추가, 제거 등의 작업에 대한 영향을 주의할 필요가 있습니다. - Reserve를 적절히 사용하면 메모리 할당 시도 회수를 ..

[UE5] Cannot open include file: 'CommonAnimationTypes.generated.h' 해결

기존 UE4 프로젝트를 UE5로 변환시 다음과 같은 오류가 가 발생 하였습니다. 1>C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\AnimGraphRuntime\Public\CommonAnimationTypes.h(7): fatal error C1083: Cannot open include file: 'CommonAnimationTypes.generated.h': No such file or directory 해결 방법은 '프로젝트.Build.cs' 파일의 PublicDependencyModuleNames에 AnimGraphRuntime 모듈을 추가하면 됩니다. PublicDependencyModuleNames.AddRange(new string[]..

[UE5] FHitResult의 Actor 문제 해결

FHitResult의 Actor는 GetActor()로 변경 되었습니다. UE4 코드 UE4에서는 WeakPointer를 기반 하였습니다. (TWeakObjectPtrBase::Get(), TWeakObjectPtrBase::IsValid()) TArray collidedActors; for (auto& hitResult : HitResults) { if (!hitResult.bBlockingHit && hitResult.Actor.IsValid()) { collidedActors.Add(hitResult.Actor.Get()); } } UE5 코드 WeakPointer에서 FActorInstanceHandle로 구현이 변경 되었습니다. TArray collidedActors; for (auto& hit..

[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] 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..

[UE4] blueprint의 부모 클래스가 변경되는 현상 해결 방법

blueprint의 부모 클래스가 변경되는 현상 해결 방법 블루프린트를 만들면서 EquippableItem으로 설정하고 저장하였는데 에디터를 다시 구동시키면 이상하게도 부모의 클래스 이름이 PlusItem으로 변경되는 현상이 있었습니다. 인터넷 서칭을 해보니 다음과 같은 글을 찾을 수 있었습니다. My problem is similar. I cannot use File >> Reparent Blueprint (I have renamed the original parent class. But the renamed new class didn't show up). What helped is to add the following line to DefaultEngine.ini below [/Script/Engin..

[UE4] UObject의 참조 카운트(UObject Reference Count)

어떠한 오브젝트의 참조 카운트를 얻을 수 있는 코드입니다. static int32 URamaStaticFunctionLib::GetObjReferenceCount(UObject* Obj, TArray* OutReferredToObjects = nullptr) { if(!Obj || !Obj->IsValidLowLevelFast()) { return -1; } TArray ReferredToObjects;//req outer, ignore archetype, recursive, ignore transient FReferenceFinder ObjectReferenceCollector(ReferredToObjects, Obj, false, true, true, false); ObjectReferenceColl..

[UE4] 액터의 수명 주기, 가비지 콜렉터

액터의 수명 주기 액터의 생명 주기에 대해서 이해를 하고 있어야 겠습니다. 이 문서는 액터의 수명 주기에 대한 일반적 개요서로, 액터가 레벨에 어떻게 인스턴스가 생성 (Spawn) 되고 소멸 (Destroy) 되는지에 대해서입니다. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Objects/Optimizations/ 언리얼 오브젝트 처리 UObject 시스템의 기능에 대한 개요입니다. docs.unrealengine.com 가비지 콜렉터 언리얼 엔진은 자체 스마트 포인터를 제공하며 이를 통해 자동으로 가비지 콜렉션을 수행합니다. [게임 개발/Unreal Engine 기본]..

[UE4] 문자열 변환 - FName, FText, String

문자열 클래스간 변환 변환 형식 변환 방법 FName → FString TestString = TestName.ToString(); FName → FText TestText = FText::FromName(TestName); FString → FName TestName = FName(*TestString); // 손실 위험 있음. FName이 대소문자 구분 없음 FString → FText TestText = FText::FromString(TestString); FText → FString TestString = TestText.ToString(); // 안전하지 않음. 언어 변환시 손실 위험 때문 FText → FName FText → FString -> FName // 직접 변환 없음 // 손실 위..