[언리얼엔진5 입문] 22. 멤버 함수

ASP·2024년 3월 31일
0

언리얼엔진5 입문

목록 보기
22/41

목표 : 레벨 블루프린트에 있는 함수가 이니라 특정 블루프린트 클래스에 있는 함수인 멤버 함수에 대해 알아볼 것임. 멤버 함수는 객체지향 프로그래밍에서 매우 중요한 개념.


Spawn Projectile 함수의 일부인 위의 노드들은 전부 BP_Projectile 클래스의 인스턴스를 사용함.

그렇다면 이 코드블록들을 전부 BP_Projectile 로 옮기면 좋지 않을까?

데이터를 다루는 코드가 데이터 자체와 함께 살 수 있도록 하기 위해.

이것이 바로 객체지향 프로그래밍의 핵심.


객체 지향 프로그래밍이란 함수가 조작하는 데이터와 함께 사는 것을 말함.

BP_Projectile 클래스의 블루프린트 에디터를 열고 Event Graph 탭의 왼쪽 My BluePrint 탭에서 FUNCTIONS 섹션의 + 버튼 클릭하여 클래스의 멤버 함수 생성

멤버 함수란 클래스의 함수로, 클래스의 특정 인스턴스에서 호출되는 함수

이렇게 BP_Projectile 클래스의 멤버함수인 Print Your Name 함수를 생성하고, 해당 함수는 호출시 Print String 노드를 실행하는 멤버함수임.

따라서 이제 레벨 블루프린트로 돌아가서 BP_Projectile 클래스의 인스턴스를 찾아야함.

멤버함수는 해당 클래스의 인스턴스만 사용 가능하기 때문.

BP_Projectile의 인스턴스를 생성하는 SpawnActor 노드는 인스턴스를 생성하고 그 인스턴스의 레퍼런스를 출력함.

따라서 이 레퍼런스를 드래그해서 노드를 검색하면 인스턴스의 멤버함수인 Print Your Name 함수를 호출할 수 있음.

이렇게 하면 Target이라는 특별한 입력핀에 자동으로 연결됨.

그런데 신기한 점은, Print Your Name 노드에는 그런 입력핀은 없다는 것임.

그 이유는, 암묵적으로 모든 멤버 함수는 현재 타겟이나 현재 인스턴스(Self) 라는 파라미터를 가지고 있기 때문.

Self 노드 : 멤버 함수 안에서 사용 가능한 노드로, 우리가 사용하는 현재 인스턴스를 가리킴

따라서 BP_Projectile 클래스의 블루프린트 에디터에서 위와 같이 Self 노드를 생성하고 Print 해보면 발사체 인스턴스를 생성할 때마다 Print Your Name 함수가 실행되고, 서로 다른 인스턴스의 이름이 화면에 출력되는 것을 확인할 수 있음.

이번엔 멤버 함수 Launch 를 생성해서, 스폰된 발사체 인스턴스에 impulse를 주는 기능을 구현해보자.

이렇게 블루프린트를 구성하고 실행하기 전에 컴파일 버튼을 눌러 오류가 발생하는지 확인해보자.

오류가 발생하면 밑에 Compiler Results에 오류 내용이 나오고 블루프린트 화면에서도 문제가 있는 노드에 오류 표시가 뜸.

profile
언리얼엔진 개발자의 길

0개의 댓글