이 포스팅은 아래 강의를 들으며 작성되었습니다.
https://www.udemy.com/course/unrealcourse-korean/
컴포넌트의 Tick
Actor의 Tick은 기본적으로 활성화되어있지만
컴포넌트의 Tick은 기본적으로 비활성화되어있다.
// Sets default values for this component's properties
UTriggerComponent::UTriggerComponent()
{
// Set this component to be initialized when the game starts, and to be ticked every frame. You can turn these features
// off to improve performance if you don't need them.
PrimaryComponentTick.bCanEverTick = true;
}
그래서 생성자에서 이것을 호출해 주는 것이다.
PrimaryComponentTick.bCanEverTick
물론 컴포넌트를 바로 상속받아 만든 C++ 클래스는 템플릿이 자동으로 구현되어 있으나
특정 컴포넌트를 상속받았다면 생성자, Begin, Tick함수를 직접 구현해야 하기 때문에 주의하도록 하자.
BlueprintSpawnableComponent
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
이것 또한 컴포넌트를 바로 상속받은 경우에는 자동으로 작성되는 것.
meta의 BlueprintSpawnableComponent는 블루프린트에서 이 컴포넌트를 직접 추가할 수 있도록 노출시킨다는 뜻이다.
왜 이런 걸 처음 봤을까 생각했는데 나는 C++ 클래스에서 컴포넌트를 추가해 놓는 것에 익숙해져서 그런 듯.
GetOverlappingActors
오버랩된 액터를 가져오는, Actor의 메서드다.
지금까지 충돌 체크는 콜리전 컴포넌트에 델리게이트를 달았던 기억밖에 없었는데 이런 것이 있었다니 신기하다.
(포스트 참고)
https://mountain-noroo.tistory.com/57
물론 매 Tick에서 호출하고, 오버랩 중인 객체를 가져오는 것만 할 수 있기 때문에 엄연히 다른 역할이지만
간단하게 써먹기는 좋아보인다.
TArray<AActor*> Actors;
GetOverlappingActors(Actors);
for(AActor* Actor : Actors)
{
FString str = Actor->GetActorNameOrLabel();
UE_LOG(LogTemp, Display, TEXT("Your message: %s"), *str);
}
얻은 Actor TArray로 이름을 출력하는 간단한 코드.
저 형태의 for문은 배열에서 요소 하나하나를 순회하는 구문인데.
C#의 foreach와 같은 역할로 쓰게 될 것 같다. (C++에는 foreach가 제공되지 않는 듯)
태그
언리얼도 유니티처럼 태그를 사용해 구분하는 것이 가능하다.
태그 이름을 직접 입력해준다.
태그는 여러개 달 수 있다.
여기서는 액터 태그를 사용하였다.
for(AActor* Actor : Actors)
{
if(Actor->ActorHasTag("Unlock1"))
UE_LOG(LogTemp, Display, TEXT("Unlock1"));
}
ActorHasTag 함수를 이용해 해당 태그를 가지고 있는지 체크하고
태그가 있는 경우에만 반응하도록 설정한다.
'언리얼 > [Udemy] UE5' 카테고리의 다른 글
[언리얼] Udemy 강의 14일차 메모 (~111강) (0) | 2023.10.23 |
---|---|
[언리얼] Udemy 강의 12일차 메모 (~98강) (1) | 2023.10.17 |
[언리얼] Udemy 강의 11일차 메모 (~92강): 5.1 이후의 Input Action Mapping (0) | 2023.10.16 |
[언리얼] Udemy 강의 10일차 메모 (~85강) (1) | 2023.10.13 |
[언리얼] Udemy 강의 9일차 메모 (~79강) (2) | 2023.10.11 |