Component를 알아야 되는 이유!
기능을 묘듈화 해서 액터에서 사용할 수 있게 해주는 용도로
코드를 재사용 할 수 있고
액터가 너무 비대해지지 않으며 해당 기능(예 : 체력 공격 이동 로직 등 )을 컴포넌트 단위로
분리해서 관리가 가능해진다.
Actor Component와 Scene Component의 차이
Actor Component (UActorComponent)
위치나 공간(Transfrom)을 조절하지 않는 논리적 기능을 제공하는 데 초점이 맞춰진 컴포넌트
데미지 계산 , 상태 관리, 액터에 추가적인 동작 부여하는 용도로
물리적이거나 시각적인 요소를 다룰필요 없을 때 사용
Scene Component (USceneComponent)
액터 컴포넌트를 상속받아 만들어짐.
위치(위치, 회전, 스케일등)의 정보를 가질 수 있는 컴포넌트로 , 게임월드 내에서 공간적인 표현이 필요한 경우사용
메시 , 라이트 , 카메라 등과 같이 장면에 배치되고 계층 구조를가질 수 있는 요소를 다룸
c++할때 클래스 내부에 클래스를 넣어서 사용한 기억이 있었다.
언리얼에서는 해당 클래스의 역할을 하는 클래스가 컴포넌트였다.
블루 프린트 라이브러리
언리얼 엔진에서 c++로 작성된 기능을 블루프린트 에서 재사용 가능하도록 노출 시켜주는 클래스
Blueprint Function Library이라는 클래스를 전역 함수로 만들어서 사용하는 것
전역 접근이 가능하며 (특정 액터나 컴포넌트를 부를필요없이 어디서나 호출 할 수 있다.)
재사용이 가능하며 (수학 계산용도, 문자열 , 디버깅등)
c++에서 로직을 작성한 것을 블루프린트에서 간단하게 호출 가능
변수를 넣어서 사용할 수는 없으니 게임 인스턴스를 같이 사용하거나 아니면
계산 기능이 담긴 전역함수로서 사용할 수 있을 것 같다.


UFUNCTION(BlueprintCallable)
해당 함수를 부를수 있고 다음 노드를 실행시키는 역할
UFUNCTION(BlueprintPure)
블루프린트에서 실행 시키는 역할의 노드가 아닌 값을 전달 해주는 노드
이제 해당 블루프린트 기능을 만들때는 알아두면 좋을 것 같다.