개발단에 가입하여 베르의 게임 개발 유튜브를 후원해주세요!
안녕하세요! 여러분들과 함께 게임 개발을 공부하는 베르입니다!
이번에는 언리얼 C++에서 만든 함수를 블루프린트에서 호출할 수 있게 만드는 방법을 알아봅시다!
사용 엔진 버전 : 5.0.2
타임라인
0:00 인트로
0:10 프로젝트 및 클래스 생성
0:47 함수 복습
1:35 함수를 블루프린트에서 호출할 수 있게 만들기
2:53 C++ 클래스 기반으로 블루프린트 클래스 만들기
4:09 함수를 블루프린트에서 호출하기
5:15 아웃트로
스크립트
인트로
안녕하세요. 여러분들과 함께 게임 개발을 공부하는 베르입니다.
이번에는 C++ 클래스에서 만든 함수를 블루프린트에서 호출하는 방법을 알아보도록 하겠습니다.
프로젝트 생성 및 클래스 생성
그럼 이제 언리얼 엔진에서 함수를 만들어보기 위해서 언리얼 엔진을 실행하고 새 프로젝트를 생성합니다.
카테고리는 게임으로 하고, 다른 코드 없이 완전히 비어있는 기본 템플릿을 선택하겠습니다.
그리고 프로젝트 타입을 C++로 변경한 다음 프로젝트를 생성합니다.
프로젝트가 생성되면 Actor 클래스를 상속받아서 C++ 클래스를 하나 생성합니다.
클래스의 이름은 언리얼 엔진이 기본으로 추천해주는 MyActor를 그대로 쓰도록 하겠습니다.
함수 복습
클래스가 생성되고 나면 먼저 MyActor의 헤더 파일로 이동해서 저번 영상의 복습으로 간단한 함수를 만들어 보겠습니다.
일단 bool 타입으로 키가 눌렸음을 알리는 bPressedKey 변수를 선언합니다.
그리고 InputSpaceKey 함수와 MoveUp 함수를 선언합니다.
그 다음에는 소스 파일로 이동해서 함수를 구현해줍니다.
먼저 InputSpaceKey 함수에서는 매개변수를 가져와서 bPressedKey를 설정해줍니다.
그리고 MoveUp 함수에서는 키가 눌려서 bPressedKey 변수가 true가 되었을 때 액터의 위치 값을 가져와서 상승시키도록 계산한 뒤에 다시 액터의 위치로 설정하도록 코드를 작성합니다.
함수를 블루프린트에서 호출할 수 있게 만들기
함수를 완성한 다음에는 이 함수들을 블루프린트에서 호출해서 사용할 계획입니다.
다만 이렇게 그냥 만들어진 함수들은 기본적으로 블루프린트에서 호출하려고 해도 컨텍스트 메뉴에는 보이지 않습니다.
그럼 이제 C++ 클래스에서 직접 만든 함수들을 블루프린트 클래스에서 호출할 수 있도록 만들어 보겠습니다.
언리얼 C++ 변수 영상에서 프로퍼티를 언리얼 에디터에서 볼 수 있게 하기 위해서 UPROPERTY 매크로를 사용한 것을 기억할 겁니다.
그와 대응되는 기능으로 함수에서는 UFUNCTION 매크로를 사용하면 함수를 블루프린트에서 사용할 수 있게 설정하는 등의 기능을 지정자로 넣을 수 있습니다.
함수들에 UFUNCTION 매크로를 추가해주고 지정자는 BlueprintCallable과 Category="Move"로 입력하겠습니다.
UFUNCTION 매크로에서 BlueprintCallable 지정자를 넣어주면 해당 함수를 블루프린트에서 사용할 수 있게 됩니다.
그리고 블루프린트에서 사용할 모든 함수에는 카테고리를 할당해줘야만 정상적으로 호출 할 수 있게 됩니다.
그렇기 때문에 함수를 블루프린트에서 사용하려면 UFUNCTION 매크로에 반드시 카테고리 지정자를 넣어줘야 합니다.
UFUNCTION 매크로를 모두 작성하면 저장하고 언리얼 에디터로 돌아가서 명령 콘솔 창에 LiveCoding.Complie을 입력해서 수정 사항을 컴파일 해줍니다.
C++ 클래스 기반으로 블루프린트 클래스 만들기
그 다음에는 만든 함수가 블루프린트에 잘 호출되는지 확인하기 위해서 MyActor 클래스를 기반으로 블루프린트 클래스를 만들어야 합니다.
콘텐츠 브라우저에서 MyActor C++ 클래스 에셋을 우클릭하고 [MyActor 기반 블루프린트 클래스 생성]을 선택하면 블루프린트 클래스 추가 창이 뜹니다.
블루프린트 클래스의 이름을 BP_MyActor로 입력한 다음 블루프린트 클래스 생성 버튼을 누릅니다.
블루프린트 클래스가 생성되고 나면 생성된 블루프린트 클래스를 대상으로 블루프린트 에디터가 열립니다.
그 다음에는 이 액터가 키 입력을 받아서 움직이는 것을 잘 보이게 만들기 위해서 컴포넌트 패널의 [추가] 버튼을 누르고 Sphere 컴포넌트를 찾아서 추가해줍니다.
그리고 추가된 Sphere 컴포넌트를 DefaultSceneRoot에 드래그&드롭해서 루트 컴포넌트로 만들어 줍니다.
그리고 Sphere 컴포넌트를 선택하고 디테일 패널의 피직스 카테고리에서 피직스 시뮬레이트에 체크해줍니다.
블루프린트 세팅의 마지막 과정으로는 이 액터가 입력을 받을 수 있도록 설정할 차례입니다.
블루프린트 에디터에서 이벤트 그래프 패널로 이동합니다.
그 다음에는 Begin play 이벤트 근처의 그래프 빈 영역에 우클릭하고 컨텍스트 메뉴에서 Get Player Controller와 Enable Input 함수를 찾아서 노드를 배치해줍니다.
그리고 Begin Play 이벤트 노드와 연결해줍니다.
이렇게 하면 이 액터가 입력을 받을 수 있도록 설정됩니다.
함수를 블루프린트에서 호출하기
기본 세팅을 끝냈으니 이제 앞에서 만든 함수들을 블루프린트에서 호출해볼 차례입니다.
그래프의 빈 영역에 우클릭하고 컨텍스트 메뉴에서 스페이스 바 이벤트를 찾아서 추가해줍니다.
그 다음에 다시 빈 영역에 우클릭하고 컨텍스트 메뉴를 살펴보면 Move 카테고리에 우리가 만든 함수를 찾을 수 있습니다.
먼저 InputSpaceKey 함수 노드를 두 개 추가하고 각각 Pressed 핀과 Released 핀에 연결해줍니다.
그리고 Pressed 핀에 연결된 노드에는 Pressed가 true가 되게 체크해줍니다.
그 다음에는 MoveUp 함수 노드를 추가하고 틱 이벤트와 연결해줍니다.
블루프린트 작성이 모두 끝난 다음에는 블루프린트 에디터의 컴파일 버튼과 저장 버튼을 차례대로 누른 뒤 블루프린트 에디터를 닫아줍니다.
그 다음에는 테스트를 위해서 BP_MyActor를 레벨에 배치하고 게임을 플레이시켜줍니다.
이제 스페이스 바를 누르면 액터가 떠오르고 손을 떼면 다시 중력의 영향을 받아 떨어지는 모습을 볼 수 있습니다.
이런 방식으로 프로그래머가 블루프린트에서 호출할 수 있게 핵심 기능을 가진 함수를 만들면 디자이너는 블루프린트에서 함수를 조합해서 게임 기능을 만들면 됩니다.
아웃트로
이번 영상에서는 C++에서 만든 함수를 블루프린트에서 호출하는 방법에 대해서 알아보았습니다.
이 강좌는 시청자 여러분들의 시청과 후원으로 제작되었습니다.
이상 베르의 게임 개발 유튜브였습니다. 감사합니다.
[투네이션]
[Patreon]
[디스코드 채널]
'Unreal Engine5' 카테고리의 다른 글
[UE5] UE5 프로그래밍 입문 (5) - 입력 (0) | 2022.06.22 |
---|---|
[UE5] UE5 기초 (1) - 액터와 컴포넌트 (0) | 2022.06.08 |
[UE5] UE5 프로그래밍 입문 (3) - 함수 (0) | 2022.05.24 |
[UE5] UE5 프로그래밍 입문 (2) - 변수 & UPROPERTY (0) | 2022.05.18 |
[UE5] UE5 프로그래밍 입문 (1) - C++ 클래스 생성과 기본 이벤트 (0) | 2022.05.11 |