[UE4] ActorTag 및 ComponentTag

처음에



액터와 컴포넌트에는 Tags라는 속성이 있습니다.
FName 형의 배열이 되어 있어, 자유롭게 캐릭터 라인을 추가할 수 있습니다.
하지만, 특히 직접 뭔가 동작이 바뀌는 것은 아닙니다.
또한 GameplayTags와는 전혀 관련이 없습니다.



무엇을 사용합니까?



Component나 Actor의 식별에 이용할 수 있습니다!
캐스트나 이름의 비교등에서도 동등한 것을 할 수 있는 경우도 있습니다만, 이쪽은 AActor나 UActorComponent등의 기본 클래스에 구현되고 있기 때문에
캐스트만큼 비싸지 않고, FName(런타임에서는 정수 비교)로의 처리가 되어,
클래스와 같은 "형식"이 필요하지 않기 때문에 자산 간에 참조가 추가되지 않는다는 이점이 있습니다.

예를 들어 액터에 다음과 같은 StaticMeshComponent를 4개 추가한 경우, 각각을 식별하는 것은 꽤 귀찮지만 ActorTag를 붙이는 것으로 그것이 용이해집니다.



이용 예



블루프린트에서 사용해 봅시다!
다음 예제에서는 GetComponentsByTag를 사용하여 Box라는 태그가 있는 PrimitiveComponent의 표시/숨기기를 전환합니다.



다음 예제에서는 PrimitiveComponent 배열에 대해 루프를 돌리면서 ComponentHasTag 함수를 사용하여 식별을 수행합니다. (대상 구성 요소가 하나만 있다고 가정합니다)



※ 이러한 Execution 핀을 가지지 않는 GetComponentsByTag와 같은 Pure 노드를 직접 ForLoop 등의 매크로에 찌르면 큰 부하를 만들어내는 경우가 많기 때문에,
임시 변수에 저장하는 등의 대책을 이용하십시오.

그 외에는 콜리전 이벤트 등으로 일부 액터에만 반응하고 싶은 경우에 이 태그를 사용하여 (Cast 등을 회피하면서) 식별하거나 할 수 있습니다.

Typo등의 위험성은 있으므로, 실수가 있으면 곤란한 부분은 c++측의 코드로 정수로서 FName를 취급하는 것이 좋을지도 모릅니다.

좋은 웹페이지 즐겨찾기