Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 스마트포인터
- 애셋로드
- 람다
- 알고리즘
- 정렬
- 크리티컬섹션
- 약참조
- unorder_map
- makeweakobjectptr
- 구조적 바인딩
- tweakobjectptr
- 정렬알고리즘
- 프로그래머스
- 비동기호출방법
- BFS
- 자료구조
- map
- 데이터애셋
- 델리게이트
- 강참조
- C++최적화
- UML관련
- UE_LOG
- dataasset
- 선택정렬
- stl
- enumasByue
- C++
- 언리얼가비지컬렉터
- moreeffectiveC++
Archives
- Today
- Total
기억을 위한 기록들
[UE] 월드 내 액터 탐색 할 때에는 TActorIterator 라는 클래스 템플릿이 있다. 본문
언리얼엔진에서 월드 내의 특정 액터들을 효율적으로 찾고 순회하는 방법으로 TActorIterator 라는 템플릿 클래스가 있다.
UWorld안에 존재하는 액터들을 타입 기반으로 자동 필터링하며 순회하는 템플릿 반복자로써, 액터들을 찾기 위한 함수 중에 하나로 GetAllActosOfClss() 라는 함수를 예전에 사용 했었지만, 결국 이 함수도 내부적으로 TActorIterator를 기반으로 TArray를 할당하고 복사를 발생시켜 비용이 크다.
예시) 월드안에 있는 AMyEnemy 기반 혹은 자식 클래스 액터 탐색하기
for (TActorIterator<AMyEnemy> It(GetWorld()); It; ++It)
{
AMyEnemy* Enemy = *It;
if (Enemy->IsAlive())
{
Enemy->Highlight();
}
}
예시2) 특정 클래스로 필터링한다면
UClass* ReceiverClass = AMySpecialEnemy::StaticClass();
//혹은 TSubclassOf 파라미터로 전달받은 경우도 가능
// TSubclassOf<AMySpecialEnemy> TargetClass = 어디선가 전달받고..
// UClass* ReceiverClass = TargetClass.Get()
for (TActorIterator<AActor> It(GetWorld(), ReceiverClass); It; ++It)
{
AActor* Actor = *It;
// ReceiverClass 또는 그 자식 타입만 필터링됨
}
복잡한 액터 필터링 로직이나 비용이 큰 함수대신, 상황에 따라 TActorIterator는 좋은 선택이 될 수 있다.
'UnrealEngine' 카테고리의 다른 글
[UE] UObject 객체에 대해 참조 할때, TWeakObjectPtr<T> 템플릿 클래스 말고도, MakeWeakObjectPtr 함수가 있다. (0) | 2025.06.08 |
---|---|
[UE] 블루프린트에서 비동기방식을 다루고 싶다면 UBlueprintAsyncActionBase 클래스를 사용하자. (0) | 2025.05.31 |
[UE] 모바일 App Name다국어 대응: Android와 iOS의 Info 및 문자열 현지화(localization) 방법 (0) | 2025.05.15 |
[UE] 안드로이드 라이브러리와 UPL에 관하여 (3) | 2024.09.18 |
[Enhanced Input System] Lyra 프로젝트의 향상된 입력시스템 프레임워크 살펴보기 (2) | 2024.05.27 |