태그가 "SpawnPoint"로 지정된 액터들을 월드에서 탐색한 후, 배열에 저장하는 로직을 구현함. 기존 배열은 `Empty()` 함수를 통해 초기화함.
1. 핵심 코드
SpawnPoint.Empty(4);
for (TActorIterator It(GetWorld()); It; ++It)
{
AActor* Actor = *It;
if (Actor->ActorHasTag(TEXT("SpawnPoint")))
{
SpawnPoint.Add(Actor);
}
}
2. 코드 설명
SpawnPoint.Empty(4);: 배열을 비우되, 이후에 추가될 액터 수를 예상하여 내부 메모리를 4칸 미리 할당함 (optional optimization).TActorIterator<AActor>: 현재 월드에 존재하는 모든 액터를 순회함.ActorHasTag(TEXT("SpawnPoint")): 액터에 지정된 태그 중 "SpawnPoint"가 있는 경우만 필터링함.SpawnPoint.Add(Actor);: 조건에 부합하는 액터를 배열에 추가함.
3. 배운 점
Empty()함수에 예상 용량을 전달하면 메모리 재할당을 줄일 수 있음.ActorHasTag는 태그 기반 필터링을 간단하게 구현할 수 있어 레벨 구성 시 유용함.- 모든 액터에 접근할 수 있는
TActorIterator는 범용적으로 활용 가능하지만, 비용이 크므로 필요할 때만 사용해야 함.
4. 요약
태그 기반으로 특정 액터들을 찾아 배열에 저장하는 방법을 익힘. 배열 초기화 시 예상 크기를 전달하여 최적화를 유도할 수 있다는 점도 확인함.