🎮Unreal4/Blueprint

[UE4] 컴포넌트(Actor/Scene Component), 열거형(Enum), 퓨어 함수 설정

공대 컴린이 2023. 1. 27. 00:41
728x90

🎮 컴포넌트 (Component)

컴포넌트는 액터에 추가시킬 수 있는 함수성 조각으로, 독립적으로 존재할수는 없지만 액터에 추가시키면 자립적으로 사용 가능하다. 따라서 액터에는 포함시켜야 하며 그 자체로는 사용할 수 없다. 

또한 컴포넌트는 일반적인 서브 오브젝트의 기본 작동방식과는 상반되게 액터 안에 서브 오브젝트로 생성된 컴포넌트는 인스턴스로 생성된다. 즉, 특정 클래스의 액터 인스턴스 각각은 컴포넌트의 고유 인스턴스를 별도로 갖는다는 뜻이다.

 

컴포넌트는 액터 컴포넌트와 씬 컴포넌트가 있다. 액터 컴포넌트(Actor Component)는 액터에 추가할 수 있는 재사용 가능 컴포넌트이며 기능만을 가지고 있다. 씬 컴포넌트(Scene Component)는 씬 트랜스폼을 갖는 컴포넌트로, 다른 씬 컴포넌트에 붙일 수 있고 계층 구조를 갖는다.

플레이어 BP 컴포넌트

컴포넌트를 제작하고 플레이어에게 할당해주면 컴포넌트에서 자동으로 Begin, End, Tick이 함께 실행된다.

🎮 열거형 (Enum)

열거형 블루프린트는 항상 Enum값을 감싸는 함수를 제작해서 함수를 호출하여 사용해야 한다.

 

Enum EStateType { Idle, Attack };
SetType(EStateType type);

// 위험한 Enum 사용 예시
SetType(EStateType::Idle);
// 안전한 Enum 사용 예시
SetIdleMode()
{
	Type = EStateType::Idle;
}

 

위처럼 Enum값을 매개변수나 지역변수에 그대로 전달하여 사용하는것은 소스코드의 어느부분에서 Enum값을 Idle로 설정했는지, Attack으로 설정했는지 찾는 과정이 매우 어렵다. 

따라서 Enum값을 감싸는 SetEnum(), IsEnum() 등의 함수를 제작하여 어느 부분에서 Enum값을 변경시켰는지 함수의 로그를 통해 알 수 있도록 프로그램을 작성해야 한다.

이런식으로 실제 함수/변수를 감싸서 만드는 함수를 감싼함수, Wrapper function이라고 부른다.

🎮  퓨어 함수 설정 (Pure)

 

함수 설정에 보이는 "퓨어"체크 항목은 해당 함수를 퓨어 함수로 만들어 변수를 바꾸지못하게 한다는 의미이다. 퓨어 함수는 실행핀이 없어도 실행이 가능하여 함수를 Return형으로 만들어준다.

728x90