UE4 클래스 블루프린트

Date:     Updated:

카테고리:

태그:

언리얼 엔진 공식 유튜브 강의를 듣고 정리한 필기입니다. 😀

🚖 클래스 블루프린트

  • 클래스 블루프린트는 레벨 블루프린트와 달리 레벨에 국한되지 않는다.
  • 클래스 블루프린트는 유니티에서의 프리팹과 같다.
    • 클래스 블루프린트로 여러 인스턴스를 찍어낼 수 있다. 따라서 지난 시간에 구현했던 방을 수십개 만들어야 한다면 일일이 복사하고 다시 구현하는 작업을 반복할 필요 없이 클래스 블루프린트로 기능을 만들어놓고 이것으로 여러 인스턴스를 찍어내어 레벨에 배치 하면 된다. 클래스 블루프린트 하나로 작업량을 줄일 수 있다.
  • 클래스 블루프린트는 부모 클래스를 선택하여 그 기능들을 상속 받아야 한다.

여러 컴포넌트들을 하나의 액터 모듈로 합쳐서 레벨 내에 1개의 개체로서 배치할 수 잇다.


컴포넌트 추가하기

image

하나의 액터는 여러 컴포넌트들로 이루어진다.

  • 루트 컴포넌트
    • 해당 액터를 대표하는 컴포넌트
    • 위치, 회전 등등을 이 루트 컴포넌트를 기준으로 한다.
  • 루트 컴포넌트 자리에 원하는 컴포넌트를 드래그 하면 위 사진과 같이 루트 컴포넌트로 만들 수 있다.

image

  • 이 액터 블루프린트(LightActor_BP)는 다음과 같은 컴포넌트로 구성된다.
    • LampFixture (루트 컴포넌트) 👉 Mesh 컴포넌트이다. Mesh 에셋도 드래그 하여 컴포넌트로 만들 수 있다. 이런 시각적 요소인 Mesh 들도 컴포넌트다. 액터는 개체들을 구분하는 단위일 뿐
    • Spot Light 👉 원뿔 모양으로 빛을 내는 컴포넌트
      • 디테일 패널의 Light 프로퍼티에서 빛의 각도, 세기 등을 조절하였다.
    • Box Collision 👉 이 라이트 가까이에 오면 라이트 빛을 킬 수 있도록 하기 위한 콜리전 컴포넌트
    • Text Render 👉 라이트를 킬 수 있다는 안내 메세지를 띄울 텍스트 컴포넌트

image

선택된 이 컴포넌트들이 하나의 액터의 구성요소로서 함께 움직인다. 하나의 액터는 이 블루프린트 전체의 내용을 담는다.

  • 에디터에 이미 배치된 블루프린트 인스턴스를 수정하는 것은 그 인스턴스만 수정하는 것이다.
  • 블루프린트에서 수정하면 에디터에 배치 된 이 블루프린트로 찍어낸 모든 인스턴스들에게 전부 반영이 된다.


기능 추가하기

image

클래스 블루프린트에서는 레벨 블루프린트와 달리 레벨 상에 어떻게 배치 되어 있던간에, 현재 선택된 개별 컴포넌트를 인식하여 그것에 적용할 수 있는 함수/이벤트를 우선적으로 띄워준다. 컴포넌트 창에서 현재 Text Render 컴포넌트가 선택되어 있기 때문에 Text Render 의 함수, 이벤트 목록을 우선적으로 보여주는 것을 볼 수 있다.

image

  • 컴포넌트 창에서 드래그 👉 Get으로만 불러 옴
  • 컴포넌트 레퍼런스 변수에서 드래그 👉 Get, Set 선택하여 불러 올 수 있음
    • 컴포넌트 레퍼런스 변수가 참조하는 대상인 컴포넌트를 바꿔서 저장할 수도 있다. 변수이므로!
    • Ctrl + 드래그 👉 Get으로 변수를 가져 옴
    • Alt + 드래그 👉 Set으로 변수를 가져 옴

image

이 액터(블루프린트)의 Box Collision 컴포넌트에서 두 이벤트를 가져왔다. 해당 컴포넌트에 충돌되면 Spot Light 컴포넌트의 Visible 이 반전될 것이다.

image

  • 플레이어가 가까이 가면 액터의 빛(Spot Light 컴포넌트)가 켜지고 떨어지면 꺼지는 것을 확인할 수 있다.
  • 클래스 블루프린트로 작성했기 때문에 같은 기능을 하는 또 다른 액터를 만드려면 그저 액터를 복사하거나 동일한 블루프린트로 또 찍어내서 레벨에 배치하면 그만이라 굉장히 편하다. 동일한 블루프린트로 다른 인스턴스를 찍어내는 것이다.
    • 레벨 블루프린트로 이를 구현했다면 스크립트 노드들을 복사하여 새로 만든 두번째 액터를 참조하는 변수에 대해서 다시 스크립팅을 했어야 했을 것이다.


입력 기능 추가하기

  • 액터(블루프린트)에 가까이 가면 유저의 입력 활성화 + 텍스트의 Visible을 토글
    • 입력 활성화 되면 F키 입력이 들어올시 라이트의 Visible을 토글
  • 액터(블루프린트)에서 떨어지면 유저의 입력 비활성화 + 텍스트의 Visible을 토글

image

  • PlayerController
    • 👉 플레이어가 게임 속에서 조종하는 캐릭터 등의 액터로 플레이어의 입력을 전달한다는 뜻. 입력 이벤트를 가진다.
    • Player Index 0 은 첫번째 플레이어를 뜻한다. 싱글 플레이에서의 0 번은 곧 플레이어 본인을 뜻함
    • Get Player Controller는 해당 인덱스의 플레이어에게 입력을 허가하는 Player Controller를 리턴해준다.
  • 리턴 받은 Player Controller 를 통해 입력을 활성화(Enable Input) 및 비활성화(Disable Input)할 수 있다.
  • 키보드 F 이벤트는 Enable Input 상태일 때만 호출 받을 수 있는 이벤트다.
    • Enable Input 상태일 때 F 키보드 입력이 들어올 때 발생한다.

image

플레이 中 Shift + F1 단축키를 통해 마우스 컨트롤을 얻을 수 있다. 플레이를 하면 마우스 커서가 사라지는데 이를 통하여 다시 나타나게 할 수 있다.

  • 블루프린트 실행은 인스턴스 별로 다르다.
    • 따라서 플레이 하여 디버깅을 할 때 위와 같이 Shift + F1 단축키를 통해 마우스 컨트롤을 얻은 후 디버깅 할 블루프린트 '인스턴스'를 선택할 수 있다.

image

액터에 가까이 가니 Press F to Toggle Helpful Text 컴포넌트가 렌더링 되어 보이는 것을 확인할 수 있다. 다시 떨어지면 보이지 않는다.


깔끔하게 스크립팅 하기 (블루 프린트에서 주석 달기 Comment)

단축키 C 로 선택된 노드들을 주석으로 묶을 수 있다. (for 개발자 편의)

image

관련있는 노드들을 한꺼번에 선택 후 C 를 누르면 이렇게 주석으로 묶을 수가 있다. 메모도 할 수 있고 말풍선을 통해 나타낼 수도 있어 편하다. 오른쪽 디테일 패널에서 주석의 색깔 등등 속성을 변경할 수도 있다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

UE4Docs 카테고리 내 다른 글 보러가기

댓글 남기기