게임 엔진
-
[Unreal/Editor] Profiler 사용법 링크게임 엔진/Unreal 2024. 5. 24. 21:56
튜토리얼은 다음을 참고. 언리얼 엔진의 언리얼 인사이트 | 언리얼 엔진 5.2 문서 | Epic Developer Community (epicgames.com) 언리얼 엔진의 언리얼 인사이트 | 언리얼 엔진 5.4 문서 | Epic Developer Community언리얼 인사이트로 프로젝트를 프로파일링합니다.dev.epicgames.com 인사이트 빌드 방법, 이 방법으로 프로파일러도 빌드하여 사용할 수 있으니 참고바람.언리얼 엔진의 트레이스 퀵스타트 가이드 | 언리얼 엔진 5.2 문서 | Epic Developer Community (epicgames.com) 언리얼 엔진의 트레이스 퀵스타트 가이드 | 언리얼 엔진 5.4 문서 | Epic Developer Community다음 구성 단계에 따라 언리..
-
[Unreal/C++] Montage에서 SkeletalMeshComponent 가져오기게임 엔진/Unreal 2024. 2. 24. 16:36
다음과 같이 PreviewMesh를 이용하거나, Skeleton에서 FindCompatibleMesh로 매칭이 되는 스켈라탈 메쉬를 로드하여 가져와 SkeletalMeshComponent에 설정할 수 있다. USkeletalMesh* pPreviewMesh = _pMontage->GetPreviewMesh(); if (pPreviewMesh == nullptr) { pPreviewMesh = _pMontage->GetSkeleton()->FindCompatibleMesh(); } USkeletalMeshComponent* pSkeletalMeshComp = NewObject(); pSkeletalMeshComp->SetSkeletalMesh(pPreviewMesh); if (IsValid(pSkeleta..
-
[Unreal/C++] 런타임에서 몽타주에 노티파이 추가하는 방법게임 엔진/Unreal 2024. 1. 25. 17:20
애니메이션 몽타주 로드 시 다음 코드 실행하면 된다. _pAnimAsset = 대충 애니메이션 로드하는 함수. UAnimMontage* pAnimMtg = Cast(_pAnimAsset); if (pAnimMtg == nullptr) { return; } // 노티파이 추가 int newIndex = pAnimMtg->Notifies.Add(FAnimNotifyEvent()); FAnimNotifyEvent& newEvent = pAnimMtg->Notifies[newIndex]; if (UObject* AnimNotifyClass = NewObject(pAnimMtg, UCustomNotify::StaticClass(), NAME_None, EObjectFlags::RF_Transactional)) {..
-
[Unreal/C++] "Unable to destroy previously allocated sequence instance - this could indicate a memory leak." 에러 처리게임 엔진/Unreal 2023. 6. 17. 18:08
정석적인 방법은 Component 등 플레이 마다 Begin과 End 함수가 항상 동작하는 액터에서 시퀀스 플레이어를 관리하여 Begin에 생성, End에 제거하는 식으로 사용하는 것이다. 코드 참고 - ActorSequenceComponent 코드 참고 - ActorSequenceComponent void UActorSequenceComponent::BeginPlay() { Super::BeginPlay(); if (Sequence != nullptr) { SequencePlayer = NewObject(this, "SequencePlayer"); SequencePlayer->SetPlaybackClient(this); // Initialize this player for tick as soon as ..
-
[Unreal/C++] 애니메이션 State Event 타이밍 이슈 처리게임 엔진/Unreal 2023. 6. 17. 17:17
애니메이션 State Event를 사용하는데, 다른 캐릭터의 이벤트 타이밍이 정상적으로 동작하지 않는다면 다음 옵션이 켜져 있는지 확인 후 해당 애니메이션에서만 옵션을 False로 처리하자. USkinnedMeshComponent::bEnableUpdateRateOptimizations (기본값 : True) 해당 옵션이 활성화 되어 있으면 화면에 표시되는 크기에 따라 애니메이션 업데이트를 늦추게 된다. 일반적인 경우에는 성능을 위해 필요하지만 이벤트가 정확한 타이밍에 발동해야 하는 경우에는 해당 동작에만 이 옵션을 꺼주면 정상적인 동작을 확인할 수 있다. bEnableUpdateRateOptimizations | Unreal Engine Documentation bEnableUpdateRateOptim..
-
[Unreal/C++] 카메라 밖에 있는 액터 애니메이션 노티파이 처리게임 엔진/Unreal 2023. 5. 11. 22:02
USkinnedMeshComponent의 VisibilityBasedAnimTickOption을 OnlyTickPoseWhenRendered에서 다른 옵션으로 변경하면 된다. AlwaysTickPoseAndRefreshBones 애니메이션 실행 후 본 업데이트 및 실제 Transform 변경 AlwaysTickPose 애니메이션 실행 후 본 업데이트 OnlyTickMontagesWhenNotRendered 몽타주 애니메이션 실행 OnlyTickPoseWhenRendered 화면에 보일 때만 모든 업데이트 진행 엔진 코드에 존재하는 옵션에 대한 설명은 다음과 같다. /** Skinned Mesh Animation Tick option based on rendered or not. This dictates ..
-
[Unreal Editor] 프로퍼티에 플래그 조건으로 사용 여부 결정하기게임 엔진/Unreal 2023. 2. 17. 23:06
UPROPERTY의 meta 내부에 EditCondition = "" 으로 사용 여부를 결정할 수 있다. UENUM() enum class ETestEnum { One, Two, }; UPROPERTY(EditAnywhere) ETestEnum TestType; // TestType이 One일 때만 사용(편집 여부) UPROPERTY(EditAnywhere, meta=(EditCondition="TestType == ETestEnum::One")) float SizeNumber; // TestType이 Two일 때만 사용(편집 여부) UPROPERTY(EditAnywhere, meta=(EditCondition="TestType == ETestEnum::Two")) FString SizeDescripti..
-
[Unreal 5] C++에서 이펙트 Looping 체크 방법게임 엔진/Unreal 2022. 12. 21. 19:09
Particle System에서 Looping 체크 방법 UParticleSystemComponent->Template->IsLooping() 으로 체크. Niagara에서 Looping 체크 방법 불가능. ※ UNiagaraComponent->GetAsset()->IsLooping()이 있으나 함수 내부가 구현되어 있지 않다. IsLooping 꼬라지 bool IsLooping() { return false; } 참고문헌 UParticleSystemComponent | Unreal Engine Documentation UParticleSystemComponent A particle emitter. docs.unrealengine.com UParticleSystem::IsLooping | Unreal E..