본문 바로가기

728x90

unrealengine

언리얼 엔진 5에서의 스윕 테스트 함수들: SweepMultiByObjectType, SweepTestByObjectType 언리얼 엔진 5 (UE5)에서 충돌 감지와 관련된 다양한 스윕 테스트 함수들이 있습니다. 이번 글에서는 SweepMultiByObjectType, SweepTestByObjectType, 그리고 SweepTestByProfile 함수에 대해 알아보겠습니다.1. SweepMultiByObjectTypeSweepMultiByObjectType 함수는 월드에 대한 스윕 테스트를 수행하여 지정된 객체 유형과의 모든 초기 겹침을 반환합니다. 이 함수는 게임 월드에서 여러 객체와의 충돌이나 겹침을 감지하는 데 특히 유용합니다.사용 방법스윕 형태: 월드를 통해 스윕 할 형태(구, 상자, 캡슐 등)를 정의합니다.시작 및 종료 지점: 스윕의 시작 지점과 종료 지점을 지정합니다.객체 유형: 겹침을 확인할 객체 유형을 정의.. 더보기
"Warning: FNetGUIDCache::SupportsObject: PhysicsConstraintComponent" 오류 해석 및 해결 방법 in 언리얼5 오류 발생 원인:Unreal Engine에서 "PhysicsConstraintComponent"는 네트워크 복제(replication)를 지원하지 않는 구성 요소입니다. 이 구성 요소는 두 개의 강체의 움직임을 제한하는 데 사용되며, 네트워크 환경에서 모든 클라이언트에 동일하게 동작하도록 복제하기에는 복잡하고 성능 문제를 일으킬 수 있습니다. 해결 방법:불필요한 복제 방지:모든 클라이언트에서 동일하게 동작해야 할 필요가 없는 경우, 해당 구성 요소의 복제를 비활성화합니다.클라이언트에서 로컬 물리 시뮬레이션을 통해 구성 요소의 동작을 모방할 수 있습니다.구성 요소 단순화:더 간단한 조인트 유형을 사용하거나 제약 조건의 수를 줄여 구성 요소를 단순화합니다.현실감과 네트워크 성능 사이의 균형을 찾기 위해 다양.. 더보기
missing a MarkArrayDirty on element add/remove 경고 해결 in 언리얼 5 안녕하세요 "missing a MarkArrayDirty on element add/remove?" 라고 경고 로그가 나오는 경우 해결법입니다. Unreal Engine의 FFastArraySerializer와 관련된 문제입니다.이 오류는 요소를 추가하거나 제거한 후 배열의 상태가 제대로 표시되지 않을 때 발생합니다. 다음은 고려해야 할 몇 가지 주요 사항입니다: Marking Items Dirty : 배열에 항목을 추가하거나 업데이트할 때는 해당 항목에 대해 MarkItemDirty를 호출해야 합니다.Marking Array Dirty: 배열에서 항목을 제거할 때는 MarkArrayDirty를 호출해야 합니다. 이렇게 하면 배열의 상태가 올바르게 업데이트되고 복제됩니다. 다음은 간단한 예제입니다:// .. 더보기
UHierarchicalInstancedStaticMeshComponent 에서 인스턴스 제거 시 인덱스 변화 UHierarchicalInstancedStaticMeshComponent (HISMC)에서  인스턴스 제거의 상세 설명UHierarchicalInstancedStaticMeshComponent (HISMC)에서 인스턴스를 제거할 때 RemoveInstance 함수가 호출됩니다. 이 함수는 내부적으로 Array RemoveAtSwap 메서드를 사용합니다. 다음은 그 과정에 대한 자세한 설명입니다:배열 구조: HISMC는 인스턴스 배열을 유지합니다. 각 인스턴스는 고유한 인덱스를 가집니다.RemoveAtSwap 메서드: RemoveInstance를 호출하면 RemoveAtSwap 메서드가 사용됩니다. 이 메서드는 다음과 같이 작동합니다:제거할 인스턴스를 배열의 마지막 인스턴스와 교체합니다.마지막 인스턴스를.. 더보기
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 매크로목적:.. 더보기
UE5에서 GetLabelName 함수를 사용하지 않는 이유 GetLabelName 함수는 UE5에서 레이블을 찾는 데 사용되는 함수이지만, 다음과 같은 이유로 사용을 지양하는 것이 좋습니다.비효율성:모든 레이블을 순차적으로 검색하며 문자열 비교를 수행하기 때문에 성능이 좋지 않습니다. 특히 UMG 계층이 복잡할수록 더욱 느려집니다.전체 위젯 트리를 순회해야 하므로 깊이 중첩된 위젯의 경우 시간이 오래 걸립니다.모호성:여러 레이블에 동일한 이름이 지정되어 있을 경우 예상치 못한 결과가 나올 수 있습니다.특히 여러 레이블에 동일한 이름을 사용하여 체계를 잡는 경우 문제가 발생할 가능성이 높습니다.문맥 이해 부족:레이블이 사용되는 문맥을 고려하지 않기 때문에 레이블의 의도나 의미를 파악하기 어렵습니다.레이블의 이름만으로는 레이블을 조작하거나 상호 작용하기 어렵습니다... 더보기
UE5 에디터에서 "ParentClass" 키워드를 사용하여 에셋 찾기 UE5 에디터의 콘텐츠 브라우저에서 "ParentClass" 키워드를 사용하여 에셋을 찾는 방법을 설명해 드리겠습니다.단계별 가이드:콘텐츠 브라우저 열기:UE5 에디터의 왼쪽 패널에서 콘텐츠 브라우저를 찾아 열어주세요.검색창 사용:콘텐츠 브라우저 상단의 검색창을 클릭합니다.검색 쿼리 입력:검색창에 다음과 같은 쿼리를 입력합니다. 부분에는 찾고자 하는 부모 클래스의 실제 이름을 입력합니다. 예를 들어, AActor 클래스를 상속받는 모든 액터를 찾으려면 다음과 같이 입력합니다.ParentClass=AActorParentClass=검색 범위 좁히기:ParentClass 키워드와 함께 다음과 같은 검색 기준을 추가하여 검색 범위를 좁힐 수 있습니다.Class: 정확한 클래스 이름을 지정합니다.Name: 특정 .. 더보기

728x90