본문 바로가기

Unreal

[Unreal] 언리얼에서 auto 사용

C++11에서 auto 키워드는 선언된 변수의 초기화 식으로 변수의 타입을 추론한다.

 

TArray<FOverlapResult> OverlapResults;
	FCollisionQueryParams QueryParams(NAME_None, false, CurrentPawn);
	bool bResult = World->OverlapMultiByChannel(
		OverlapResults,
		Center,
		FQuat::Identity,
		ECollisionChannel::ECC_GameTraceChannel1,
		FCollisionShape::MakeSphere(SearchRadius),
		QueryParams);

	if (bResult)
	{		
		for (auto& OverlapResult : OverlapResults)
		{
			AMyCharacter* MyCharacter = Cast<AMyCharacter>(OverlapResult.GetActor());
			if (MyCharacter && MyCharacter->GetController()->IsPlayerController())
			{
            				.....
            		}
      	 	 }
   	 }

 

위 코드는 OverLapMultiByChannel 로 지정한 범위에서 겹치는 것들을 OverlapResult에 집어넣는다.

그리고 OverlapResult를 range based for statement로 반복해서 MyCharacter클래스를 포함한 Actor을 찾는다.

OverlapResult는 겹치는 모든 컴포넌트들이기 때문에 auto로 지정한다. 

그리고 반복문 내부에서 Cast를 통해 MyCharacter로 Cast하는데 성공하면 MyCharacter클래스를 포함한 Actor을 찾는 데 성공한 것이다.