2024-04-21
깃허브! |
---|
https://github.com/ChangJin-Lee/ARproject |
★ https://github.com/ChangJin-Lee/ToonTank |
느낀점
언리언 엔진에서 굉장히 많은 유형을 저장해둘 수 있는 TArray 배열에 대해 배웠다. TArray는 시퀀스인 컨테이너 클래스이다. GetAllActorsOfClass로 원하는 조건에 맞는 모든 Actor를 찾을 수 있었다. TArray에 해당하는 Actor들을 담아둘 수 있었다.
TArray<int32> IntArray;
TArray<FString> StrArr;
StrArr.Add (TEXT("Hello"));
StrArr.Emplace(TEXT("World"));
// StrArr == ["Hello","World"]
StrArr.Sort();
// StrArr == ["!","Brave","Hello","of","Tomorrow","World"]
TArray<int32> ValArr;
int32 Temp[] = { 10, 20, 30, 5, 10, 15, 20, 25, 30 };
ValArr.Append(Temp, ARRAY_COUNT(Temp));
// ValArr == [10,20,30,5,10,15,20,25,30]
ValArr.Remove(20);
// ValArr == [10,30,5,10,15,25,30]
int32 Index;
if (StrArr.Find(TEXT("Hello"), Index))
{
// Index == 3
}
bool bLen5 = StrArr.ContainsByPredicate([](const FString& Str){
return Str.Len() == 5;
});
bool bLen6 = StrArr.ContainsByPredicate([](const FString& Str){
return Str.Len() == 6;
});
TArray<int32> HeapArr;
for (int32 Val = 10; Val != 0; --Val)
HeapArr.Add(Val);
// HeapArr == [10,9,8,7,6,5,4,3,2,1]
HeapArr.Heapify();
// HeapArr == [1,2,4,3,6,5,8,10,7,9]
Find all Actors in the world of the specified class.
월드에 있는 특정 클래스 액터를 모두 찾아준다.
이것도 역시 Kismet에서 GameplayStatics.h을 헤더파일에 추가해야한다.
매 프레임마다 사용해서는 안된다. 매우 느린 operation이기 때문이다.
파라미터는 다음과 같다.
Name | Description |
---|---|
ActorClass | Class of Actor to find. Must be specified or result array will be empty. |
OutActors | Output array of Actors of the specified class. |
int32 AToonTanksGameMode::GetTargetTower()
{
TArray<AActor*> TActors;
UGameplayStatics::GetAllActorsOfClass(this, ATower::StaticClass(), TActors);
UE_LOG(LogTemp, Display, TEXT("%d"), TActors.Num());
return TActors.Num();
}