본문 바로가기

728x90
728x90

프로그래밍

UHierarchicalInstancedStaticMeshComponent 에서 인스턴스 제거 시 인덱스 변화 UHierarchicalInstancedStaticMeshComponent (HISMC)에서  인스턴스 제거의 상세 설명UHierarchicalInstancedStaticMeshComponent (HISMC)에서 인스턴스를 제거할 때 RemoveInstance 함수가 호출됩니다. 이 함수는 내부적으로 Array RemoveAtSwap 메서드를 사용합니다. 다음은 그 과정에 대한 자세한 설명입니다:배열 구조: HISMC는 인스턴스 배열을 유지합니다. 각 인스턴스는 고유한 인덱스를 가집니다.RemoveAtSwap 메서드: RemoveInstance를 호출하면 RemoveAtSwap 메서드가 사용됩니다. 이 메서드는 다음과 같이 작동합니다:제거할 인스턴스를 배열의 마지막 인스턴스와 교체합니다.마지막 인스턴스를.. 더보기
IsValidLowLevel과 IsValid 함수 IsValidLowLevel과 IsValid 함수는 언리얼 엔진 (UE)에서 객체 또는 액터의 유효성을 판단하는 데 사용됩니다.IsValidLowLevel목적: 객체의 기본 메모리가 유효하고 접근 가능한지 확인합니다.반환값: 객체의 메모리가 유효하면 true, 그렇지 않으면 false를 반환합니다.사용 사례:객체가 nullptr이거나 dangling pointer가 아닌지 확인해야 할 때메모리 손상이나 잘못된 메모리 접근을 확인하기 위한 저수준 검사를 수행해야 할 때IsValid목적: 객체가 유효하고 사용할 수 있는지 확인합니다.반환값: 객체가 유효하면 true, 그렇지 않으면 false를 반환합니다.사용 사례:객체가 nullptr이거나 삭제되지 않았는지 확인해야 할 때객체가 세계에서 여전히 활성 상태인.. 더보기
Unreal Engine의 스마트 포인터 WeakObjectPtr, TSharedPtr, TObjectPtr 비교 Unreal Engine 5에서 객체를 참조하는 방법에는 여러 가지가 있습니다. 그중에서도 자주 사용되는 스마트 포인터 종류인 TWeakObjectPtr, TSharedPtr, TObjectPtr에 대해 알아보겠습니다. TWeakObjectPtr목적: 객체에 대한 약한 참조를 제공하여, 객체의 생명주기를 안전하게 관리합니다.기능:객체에 대한 포인터를 저장하지만, 참조 카운트를 증가시키지 않습니다.순환 참조를 방지하고 메모리 누수를 줄여줍니다.참조하는 객체가 삭제된 경우 nullptr을 반환합니다.사용 시기:객체 소유권을 갖지 않고 단순히 참조만 할 때순환 참조를 피해야 할 때객체의 존재를 항상 보장할 필요가 없을 때TSharedPtr목적: 객체에 대한 공유 소유권을 제공하여, 여러 곳에서 객체를 안전하게.. 더보기
"DOREPLIFETIME_CONDITION"를 사용해서 생성 시 한번만 동기화 하기 Unreal Engine 5에서 네트워크를 통해 객체의 속성을 복제할 때 GetLifetimeReplicatedProps 함수와 DOREPLIFETIME_CONDITION 매크로를 사용합니다. 이 함수와 매크로를 통해 어떤 속성을 복제할지, 그리고 어떤 조건에서 복제할지를 정의할 수 있습니다.GetLifetimeReplicatedProps 함수목적: 객체의 수명 동안 복제될 속성을 지정하는 함수입니다.사용법:Engine/Net/NetDriver.h 헤더를 포함합니다.GetLifetimeReplicatedProps 함수를 오버라이드합니다.DOREPLIFETIME 또는 DOREPLIFETIME_CONDITION 매크로를 사용하여 복제할 속성을 추가합니다.DOREPLIFETIME_CONDITION 매크로목적:.. 더보기
EPhysicalSurface를 FString으로 변환하는 방법 제공된 코드는 언리얼 엔진 5(UE5)에서 EPhysicalSurface라는 enum 타입의 값을 문자열(FString)로 변환하는 기능을 수행합니다. 이는 게임 오브젝트의 물리적 특성을 나타내는 enum 값을 사람이 읽을 수 있는 문자열로 바꾸어 디버깅이나 로그 출력 등에 활용될 수 있습니다.C++ #include "Engine/EngineTypes.h"FString ConvertEPhysicalSurfaceToString(EPhysicalSurface Surface){ const UEnum* SurfaceEnum = StaticEnum(); return SurfaceEnum->GetNameByValue(static_cast(Surface));}  동작:필요한 헤더 포함: Engine/Eng.. 더보기
UE5에서 GetLabelName 함수를 사용하지 않는 이유 GetLabelName 함수는 UE5에서 레이블을 찾는 데 사용되는 함수이지만, 다음과 같은 이유로 사용을 지양하는 것이 좋습니다.비효율성:모든 레이블을 순차적으로 검색하며 문자열 비교를 수행하기 때문에 성능이 좋지 않습니다. 특히 UMG 계층이 복잡할수록 더욱 느려집니다.전체 위젯 트리를 순회해야 하므로 깊이 중첩된 위젯의 경우 시간이 오래 걸립니다.모호성:여러 레이블에 동일한 이름이 지정되어 있을 경우 예상치 못한 결과가 나올 수 있습니다.특히 여러 레이블에 동일한 이름을 사용하여 체계를 잡는 경우 문제가 발생할 가능성이 높습니다.문맥 이해 부족:레이블이 사용되는 문맥을 고려하지 않기 때문에 레이블의 의도나 의미를 파악하기 어렵습니다.레이블의 이름만으로는 레이블을 조작하거나 상호 작용하기 어렵습니다... 더보기
UE5 에디터에서 "ParentClass" 키워드를 사용하여 에셋 찾기 UE5 에디터의 콘텐츠 브라우저에서 "ParentClass" 키워드를 사용하여 에셋을 찾는 방법을 설명해 드리겠습니다.단계별 가이드:콘텐츠 브라우저 열기:UE5 에디터의 왼쪽 패널에서 콘텐츠 브라우저를 찾아 열어주세요.검색창 사용:콘텐츠 브라우저 상단의 검색창을 클릭합니다.검색 쿼리 입력:검색창에 다음과 같은 쿼리를 입력합니다. 부분에는 찾고자 하는 부모 클래스의 실제 이름을 입력합니다. 예를 들어, AActor 클래스를 상속받는 모든 액터를 찾으려면 다음과 같이 입력합니다.ParentClass=AActorParentClass=검색 범위 좁히기:ParentClass 키워드와 함께 다음과 같은 검색 기준을 추가하여 검색 범위를 좁힐 수 있습니다.Class: 정확한 클래스 이름을 지정합니다.Name: 특정 .. 더보기
AttachToComponent 와 SetupAttachment 차이? AttachToComponent와 SetupAttachment 개요UE5에서 액터를 다른 액터의 컴포넌트에 부착하기 위해 사용되는 두 가지 주요 함수입니다. 각 함수는 다음과 같은 특징을 가지고 있습니다.AttachToComponent:직접 부착: 다른 액터의 특정 컴포넌트에 액터를 즉시 부착합니다.동적 부착: 부착을 해제하거나 다른 컴포넌트에 다시 부착하는 등 동적으로 변경할 수 있습니다.유연성: 복잡한 부착 시나리오에 더 유연하게 사용할 수 있습니다.SetupAttachment:지연 부착: 다음 프레임까지 부착이 지연됩니다.계층적 부착: 부모 액터의 계층 내에 있는 컴포넌트에 액터를 부착합니다.정적 부착: 일반적으로 게임 플레이 중에 변경되지 않는 정적 부착에 사용됩니다.효율성: 많은 부착을 처리할 .. 더보기

728x90
728x90