자주 사용하는 주요 컴포넌트

Actor Component : 액터에 붙일 수 있는 기본 컴포넌트

Scene Component : + 위치 정보

Primitive Component : + 기하 정보

 

컴포넌트의 특징

컴포넌트가 붙은 액터 로드 시 추가 비용이 발생 (하지만 그렇게 크지 않음)

컴포넌트의 틱 함수는 런타임에서 메모리를 차지하기 떄문에 너무 많으면 좋지 않을 수 있다. (Tick이 필요하지 않은 컴포넌트는 Tick을 비활성화 하자)

 

씬 컴포넌트의 프로퍼티에 CreateDefaultSubobject로 새로운 씬 컴포넌트를 만들어도 SetupAttachment를 해주지 않으면 루트 컴포넌트 아래에 자동으로 붙는다.

 

디자이너 편의를 위한 함수

OnComponentDestroyed : 해당 컴포넌트가 파괴될 때 호출되는 함수

- 에디터에서 디자이너가 에디터에서 어떤 씬 컴포넌트를 삭제했을 때, 하위  씬 컴포넌트도 같이 삭제되도록 구현을 해놓으면 편할 것이다.

PostEditChangeProperty : 해당 컴포넌트가 가진 프로퍼티 값이 에디터에서 변경되면 호출된다. 기본 값을 변경하는데 사용할 수 있다. 런타임이 아닌 상태에서도 에디터에서의 변경 사항을 트래킹하여 시각적으로 확인할 수 있게 된다.

 

인터페이스 사용 예시

체력 인터페이스와 체력 컴포넌트를 같이 사용하기

사물, 캐릭터와 같은 다양한 종류의 액터에 체력 인터페이스를 사용할 수 있다.

인터페이스에는 체력 고갈 시에 호출할 함수를 정의 예) HealthDepleted

액터는 인터페이스를 상속받아 BlueprintNativeEvent 속성으로 HealthDepleted를 선언하고 HealthDepleted_Implementation 라는 이름으로 구현한다.

체력 컴포넌트에서는 오너 액터, 체력, 최대체력 프로퍼티를 만들고 커스텀 TakeDamage 함수를 정의한다. 오너 액터의 OnTakeAnyDamage 델리게이트에 커스텀 TakeDamage를 바인딩한다.

바인딩한 커스텀 TakeDamage에서는 체력 업데이트 후 Clamp작업, 오너 액터의 인터페이스 구현 여부 확인(형변환으로), 체력 고갈 시에 형변환한 인터페이스의 Execute_HealthDepleted를 호출하도록 한다.

 

TakeDamage 함수

액터에는 기본적으로 TakeDamage 함수가 내장되어 있지만 체력 프로퍼티를 가지고 있지 않기 때문에 사용자가 체력 프로퍼티를 어딘가에 두고 변경할 것을 가정하고 있다.

예를 들어 Health 컴포넌트를 사용하지 않고 액터에서 관리한다면 커스텀 액터에서 TakeDamage를 직접 오버라이드하여 체력 업데이트를 해야 할 것이다.

+ Recent posts