ArticlesBlog

Intro to Blueprints: Construction Script Customization | 08 | v4.8 Tutorial Series | Unreal Engine

Intro to Blueprints: Construction Script Customization | 08 | v4.8 Tutorial Series | Unreal Engine


UE4 TUTORIAL
블루프린트 입문
8: Contruction Script 추가 다시 만나 반갑습니다. 지난 영상에서는 Light_BP 블루프린트 작업을 했습니다. 간단하게 복습해보겠습니다.
플레이어가 라이트 근처로 가면 F 키를 눌러서 라이트를 켜라는
안내 메시지가 출력됩니다. 그래서 F 키를 눌러서
라이트를 제어할 수 있습니다. 라이트를 켠 채로 볼륨에서 멀어지면
안내 텍스트가 사라집니다. 이렇게 멀리 떨어진 상태에서는 F를 눌러도
라이트를 제어할 수가 없습니다. 다시 가까이 접근하면
라이트를 제어할 수 있습니다. 이 라이트는 클래스 블루프린트를 사용하기 때문에 또 다른 인스턴스인 두번째 라이트를
간단하게 구성해 줄 수 있었습니다. 그렇게 만든 새 인스턴스인 라이트도
추가 작업 없이 자동으로 작동합니다. 게다가 각각 개별적으로 작동하여
따로 제어할 수도 있습니다. 여기까지가 지난 영상까지
작업했던 부분입니다. 이번 영상에서는 이보다
한 발짝 더 나아가 블루프린트 입문 과정을
진행해 보겠습니다. 이번 영상에서는 Construction Script를
다루어 보겠습니다. Construction Script는
블루프린트 내의 인스턴스 각각에 다양성을 줄 수 있는 스크립트입니다. 무슨 뜻이냐 하면,
현재 라이트가 2개 구성된 가운데 이 라이트는 녹색,
이 라이트는 적색이라거나 이 안내 텍스트를 없애는 등
개별적인 특성을 부여하는 것입니다. 하지만 어떻게 그런 작업을 할 수 있을까요?
지금까지 구성한 블루프린트는 모두 파생 인스턴스 전부에 영향을 미쳤는데요. 이런 개별적 구성은 Construction Script로
작업해 줄 수 있습니다. Light_BP 블루프린트를 실행해줍니다. 그러면 지금까지 라이트의 특성을 구성해준
이벤트 그래프가 나타납니다. 하지만 이번에는 이벤트 그래프 말고
Construction Script 탭으로 갑니다. 해당 탭을 클릭해보면 노드가 단 하나뿐인
새 그래프가 나타납니다. 이것이 바로 Construction Script입니다. 지금까지의 작업은 모두
이벤트 그래프에서 이루어졌지만 거기서 구성한 스크립트는 모두
게임 속에서 발생하는 이벤트에 관한 것이었습니다. 게임 내에서는 이벤트 그래프가
각 스크립트의 구성대로 잘 작동하는지 확인하고 업데이트합니다. 반면 Construction Script는
이름에서 알 수 있듯이 블루프린트를 구축할 때 사용하는 것입니다. 블루프린트로 작업을 하거나
게임 내 레벨을 구축할 떄 Construction Script는 블루프린트 내의
프로퍼티를 업데이트할 때 사용하는 것입니다. 따라서 레벨 내 프로퍼티에 변화를 주는 등
블루프린트를 수정하고 싶다면 이 construction script가 블루프린트와 관련된
가장 최신의 정보를 제공할 것입니다. 그럼 이런 특성은 어떻게 이용할 수 있을까요? 제일 먼저 SpotLight 컴포넌트를 가지고 이벤트 그래프에서 레퍼런스를 가져와
작업을 했던 방식처럼 Construction Script에서도
똑같은 방식의 작업을 해 주겠습니다. 주의사항을 하나 말씀드리자면 지금부터 다뤄볼 블루프린트 기능은
초심자 수준은 살짝 넘어서지만 하지만 여러분은 지금까지 잘 따라 오셨으니 분명
앞으로의 과정도 잘 하시리라 생각합니다. 그럼 계속 진행해 보겠습니다. 좌측 컴포넌트 탭에서
SpotLight를 선택합니다. 그런 다음 SpotLight 컴포넌트를
그래프 상으로 좌클릭 드래그합니다. 그러면 이제 SpotLight의
Get 유형 노드가 만들어졌습니다. SpotLight의 색상을 바꾸어 보고 싶습니다.
어떻게 바꿀 수 있을까요? SpotLight 노드에서 드래그를 해준 다음 검색창에서 Color를 찾아줍니다. 그러면 Get Light Color와
Set Light Color라는 함수들이 나옵니다. 여기서는 Set Light Color 함수를 선택합니다. 그러면 Spot Light와 연결된 새 노드가 생깁니다. 타겟 핀 아래에 New Light Color이라는
항목이 존재합니다. 여기에서 어떤 색깔을 지정해 주느냐에 따라
Spot Light 컴포넌트의 색상이 변하는 것입니다. 해당 항목 옆의 작은 상자를 클릭해보면 색상 선택기에서 SpotLight의 색깔을
직접 결정해줄 수가 있습니다. 하지만 이번에는 초심자 이상의 과정도
다루어 볼 예정이므로 이 라이트 블루프린트의 기능에
유연성을 좀 더 부가해 보겠습니다. New Light Color 핀을 우클릭해 줍니다. 우클릭을 하면 관련 메뉴가 나옵니다. 선택지가 2가지 있습니다(현재는 3개)
맨 밑의 선택지는 다루지 않을 것입니다. 여기서는 맨 위의 선택지,
‘변수로 승격’을 다루어 보겠습니다. 변수로 승격 선택지를 눌러줍니다. 선택지를 누르면 새 노드 하나가
New Light Target 핀에 자동 연결됩니다. 또한 이 노드는 라이트의 새 색상 값을
담당합니다. 노드들이 서로 꼬이지 않도록 잘 정리해줍니다. 해당 변수 노드를 선택한 상태로
우상단 디테일 창으로 갑니다. 일단 이름부터 바꾸어 주겠습니다.
New Var 0는 너무 모호한 이름입니다. 새 노드 이름은 Light Color로 지어주겠습니다. 그리고 그 아래 기본값을 보면
당장은 기본값을 설정해줄 수 없습니다. 먼저 블루프린트 컴파일부터 해주어야 합니다.
안내문에도 그렇게 나와있습니다. 그러니 안내문을 따라주도록 하겠습니다. 상단 툴바에서 컴파일을 눌러주면
기본값 설정이 가능해집니다. 툴팁도 ‘준비 완료’라고 쓰여 있습니다. 정말로 도움이 되는 툴팁입니다.
준비가 완료되었다고 합니다. 이제 다시 우측 기본값으로 가면
해당 변수 노드의 기본값을 설정할 수 있습니다. 기본값 아래 노드명 옆의 막대를 클릭하면
색상 선택이 가능합니다. 하지만 이 방법도 말고
다른 방법을 사용해보겠습니다. 다시 좌상단의 컴포넌트 탭에서
SpotLight를 선택합니다. 그럼 이전에 선택했던 색상이
우측 디테일 창 Light 탭에 나타납니다. 이 색상 막대를 클릭합니다. 맨 우측 사각형에는 예전 색상이 출력됩니다.
이것은 설정이 끝날 때까지 변하지 않습니다. ‘여기에 저장할 색을 끌어 놓습니다’로
예전 색상을 드래그 해줍니다. 그럼 예전 색깔을 레퍼런스로
저장해둘 수 있습니다. 여기서 확인이나 취소를 누르지는 않고
그냥 창만 닫아줍니다. 이제 노드 상에서 Light Color를 선택해주겠습니다. 방금 그 값을 기본값으로 설정해 주겠습니다.
색상 선택 막대를 클릭해 줍니다. 방금 저장한 색상이 그대로 남아있습니다.
이것을 선택해 줍니다. 그러면 기본값을 기존 값대로 손쉽게
저장할 수 있습니다. 확인을 눌러줍니다. 마지막을 해 줄 작업은
이 Construction Script 노드 구성입니다. 해당 노드와 Set Light Color를
서로 연결해 줍니다. 이 노드들도 위치를 조정하여
보다 깔끔하게 정리해줍니다. 이렇게 Construction Script를 활용해
라이트의 색상을 변경해 주었습니다. 하지만 실제로 테스트를 해 보기 전에
할 일이 한 가지 더 남았습니다. 색상을 변경한 Light Color 노드의
디테일 창으로 돌아가면 ‘편집가능’이라는 항목이 존재합니다. 툴팁에 따르면 ‘이 변수가 이 블루프린트의 인스턴스에서
공개적으로 편집가능한지 입니다’ 라고 써 있습니다. 이 설정에 체크를 해 줍니다. 그리고 좌측 블루프린트 창에는 변수
탭이라는 것이 위치해 있는데, 이는 블루프린트에서 변수를 만들 때마다
생성되는 항목입니다. 사실 Light Color 변수도 변수 탭 오른쪽
+변수 버튼을 눌러서 만들어줄 수 있었습니다. 그런 다음 우측 디테일 창에서 변수 유형 등의
세부적인 설정도 바꿔줄 수 있습니다. 그런 다음 변수 탭에서 직접 그래프로 드래그해
다른 노드로 연결해 사용할 수 있습니다. 하지만 사실 핀 상에 우클릭을 한 다음
변수로 승격해주는 활용이 훨씬 편합니다. 그렇더라도 어떤 변수를 생성하든 이 변수 탭에 해당 항목이 추가된다는 사실은
알아두시기 바랍니다. 다시 Light Color 변수로 돌아옵니다.
항목 우측을 보면 눈 모양 아이콘이 있습니다. 이 눈 모양은 곧 해당 변수가
퍼블릭 편집 가능 상태란 사실을 알려줍니다. 무슨 뜻인지는 잠시 후에 설명하겠습니다. ‘변수가 퍼블릭이나 툴팁이 없습니다’
라고 툴팁이 적혀 있습니다. 사실 여기에도 툴팁을 추가해줄 수는 있습니다. 디테일 창의 편집 가능 항목 밑을 보면
툴팁이라는 항목이 존재합니다. ‘이 변수에 대한 부가 정보로,
커서를 올리면 표시됩니다’ 라고 합니다. 툴팁을 추가해 보겠습니다.
입력 창을 클릭한 다음, ‘라이트의 색상을 바꿔줍니다’
라고 하겠습니다. 그리고 엔터를 눌러 입력합니다. 그러면 변수 옆의 눈 모양 아이콘이
녹색으로 바뀝니다. 이제 컴파일 후 저장해줍니다. 컴파일을 누르면 Construction Script가
Set Light Color에 업데이트하는 것이 보입니다. 이렇게 저장해 준 다음,
다시 레벨로 돌아갑니다. 이제 본격적으로 플레이를 해보기 전에,
라이트에 변화를 줘보겠습니다. 레벨 내의 라이트를 선택한 상태로 디테일 탭을 보면 새 프로퍼티들이
추가된 것이 보입니다. 해당 라이트에 대한 디폴트 Light Color도 있습니다.
이 색깔을 바꿔보겠습니다. 이 라이트는 적색으로 바꾼 뒤
확인 버튼을 눌러줍니다. 그리고 다른 인스턴스를 선택해보면 방금 바꿔주었던 색상과는 다른
디폴트 Light Color를 가지고 있습니다. 따라서 이 설정도 색상 선택기를 누르고,
이번에는 녹색으로 바꿔주겠습니다. 이제 플레이를 해 보겠습니다. 라이트 근처로 가서 F 키를 누르면
적색 라이트가 켜집니다. 이 라이트에 똑같이 해 보면
이번에는 녹색 라이트가 켜집니다. 이제 레벨 내에서 작동하는 블루프린트들에
유연성을 한층 더해 줄 수 있었습니다. 아주 멋지게 작업이 끝났습니다. 목표로 했던 작업 대부분을
잘 마무리하였습니다. 하지만 이번 영상을 끝마치기 전에
마지막으로 한 가지만 더 보여드리겠습니다. 다시 Light_BP 그래프로 돌아갑니다. 창은 잠시 떼어서 설명하겠습니다. 레벨 상의 라이트를 선택한 상태로
색상을 바꾸려고 한다면 실제로 라이트의 색상을 수정하는
레벨 디자이너의 입장에서는 이 색상 조정 기능도 살짝
편의성이 모자란 감이 있습니다. 라이트에 어떤 색상이 적용되는지
실시간으로 확인할 수 있다면 좋을 텐데요. 실제로는 어떤 변경 사항이 가해졌는지
확인하면 더 편할 테니까요. 그러니 레벨 디자이너들이
보다 쉽게 작업할 수 있도록 마지막으로 변경점 한 가지만
추가해보겠습니다. 다시 Construction Script 창으로 돌아가서 창을 조금만 넓혀주겠습니다. 그래프 상의 Spot Light 노드에서
드래그를 한 다음 라이트가 Toggle Visibility를 거치기 전에 레벨 디자이너로서
디버그를 한다는 차원에서 Set Visibility를 찾아줍니다. 그러면 단 하나의 Set Visibility 함수가 나타납니다. 이 Set Visibility 함수를 선택합니다.
그럼 새 노드가 만들어집니다. 이 노드의 핀 중에 Propagate to Children은
여기서 다루지 않을 것입니다. 하지만 New Visibility 핀은
해당 라이트를 제어하는 역할을 합니다. SpotLight 노드의 디테일 패널을 보면
똑같은 프로퍼티라는 사실을 알 수 있습니다. Rendering 탭의 비활성화된 Visible을
정의하려는 것입니다. 레벨 제작 과정에서 이 부분을 이용하려면 Set Light Color 노드와
Set Visibility 노드를 연결해줍니다. 창을 최대화 해서
작업을 자세히 보여드리곘습니다. Set Light Color와 Set Visibility를 연결하시고 핀을 우클릭해서 Light Color 노드의
새 프로퍼티를 만들었던 때처럼 Set Visibility에도 똑같은 방식의
작업을 해 주겠습니다. Set Visibility 노드의 New Visibility 핀을
우클릭한 다음, 변수로 승격을 눌러줍니다. 변수 노드가 잘 보이게끔
위치를 조정해줍니다. 또한 이 변수 노드 역시 디테일 창에서
이름을 바꾸어 주겠습니다. 이 변수 노드의 이름은
Visibility Settings입니다. 이 역시 편집가능에 체크를 해주어서 레벨 에디터 내에서 라이트가
켜졌는지 꺼졌는지 정의할 수 있게 하겠습니다. 이 체크 박스에 체크를 해줍니다. 여기에도 툴팁을 남겨
혹시 모를 후임자에게 도움을 줍시다. ‘라이트를 켜거나 끔’이라고 적겠습니다. 모든 작업이 끝났다면
컴파일 후 저장해줍니다. 그 다음 블루프린트 창을 닫아줍니다. 다시 레벨에 위치한 라이트로 돌아가보면 디테일 창에 또 다른 프로퍼티가
추가되어 있습니다. 각 항목에 마우스를 올려 툴팁을 보면 Visibility Settings는 라이트를 켜거나 끄고,
Light Color는 라이트의 색상을 바꾼다고 합니다. 따라서 레벨 내의 디폴트 탭에서도
라이트의 색상을 바꿔줄 수도 있는 것입니다. 따라서 레벨 내에 라이트 색상을
실시간으로 관찰하며 바꿔줄 수도 있고 괜찮은 색상이 나올 때까지 보다가
제일 마음에 드는 것을 고를 수 있습니다. 이 라이트 역시 Visibility Settings로 라이트를 켜고
Light Color로 색을 보면서 작업합니다. 라이트 색상은 청색으로 가겠습니다. 이 라이트의 Visibility Setting은 체크로 해두어 기본적으로 켜져있게끔
설정을 해 주겠습니다. 언제든지 이 Trigger Volume에 접근해
F키를 눌러주면 꺼줄 수 있습니다. 그 상태에서 F키로
계속 라이트를 제어할 수 있지만 어쨌든 기본 설정은
켜두는 것으로 바꾼 것입니다. 이 라이트는 반대로 Visibility Settings에서
체크를 해제하겠습니다. 그러면 예전처럼 기본적으로
라이트가 꺼져있게 설정됩니다. 기본 설정이 켜짐인
저 라이트와는 다르죠. 이제 플레이를 눌러 실제로는 어떤지
테스트를 해 보겠습니다. 이쪽의 라이트는 꺼져 있습니다. 반면 뒤쪽 라이트는 켜져있습니다.
청색 불빛이 잘 보입니다. 이 라이트는 F키를 누르면 켜집니다. 이 라이트도 F키를 누르면 꺼집니다. 모든 작업이 끝났습니다. 이제 레벨 디자이너들이 디테일 창을 통해 레벨 상에서도 직접 블루프린트
작업을 할 수 있게 되었습니다. 굳이 블루프린트 창을 일일히 열고
블루프린트를 직접 수정해 줄 필요가 없습니다. 각 라이트의 변수들을 레벨 상에 노출시켜
직접 수정 작업을 해줄 수 있는 것입니다. 따라서 작업이 대폭 쉬워집니다. 이번 영상은 여기서 마치겠습니다. 이번 영상에서는 클래스 블루프린트의
Construction Script 작업을 했습니다. 이를 통해 블루프린트 관련 작업을
훨씬 쉽게할 수 있는 장치를 마련했습니다. 이번 영상은 여기까지입니다.
다음 영상에서 뵙겠습니다. 다음 영상에서는 클래스 블루프린트 제작에
다른 작업방식을 적용해 보겠습니다. 지금까지 우리는 콘텐츠 브라우저 상에서
블루프린트를 만들고 블루프린트 에디터에서 컴포넌트를,
클래스 블루프린트에서 수정 작업을 했습니다. 다음 영상에서는 이를 레벨 에디터에서 해결하고 필요 컴포넌트도 레벨 에디터에서 추가하여 이를 블루프린트로 바꾸는
색다른 작업방식을 보여드리겠습니다. 그냥 다른 작업방식을 보여드리면서
이번 영상 시리즈를 마무리하겠습니다. 이번 영상은 여기까지입니다.
시청해주셔서 감사합니다. 다음 영상에서 뵙겠습니다. cafe.naver.com/unrealenginekr

Comments (23)

  1. In this example, why can't you just change the per instance colour and visibility directly in each instance's details panel?

  2. I've tried to set up a animation by random on a skeletal mesh component, in PIE doesn't setup, in level editor setted up but different one not like showed in the BP view port. Is not the construction scrip well ending for all purposes?

  3. Awesome! loving the tutorials for unreal engine 4

  4. Why do you need to build the color options in the construction script? Can't the same changes be made inside the event graph?

  5. OOOOOOOOOOOOr you could just change the colour property in the point light component of the instance.

  6. Spaces in a variable name. Cringe..

  7. why the subtitle is Korean??? I want English although My English isn't well…..

  8. 4:56 In version 16 there is also an option: Promote to Local variable not only just Promote to Variable. What is the difference between those two and should i use Promote to Local Variable instead in the future?

  9. excellent video!!

  10. You are an amazing teacher, Two days ago I didn't knew anything about Unreal Engine I was totally clueless. Now I learned a little bit about Unreal Engine. Thank you for uploading this series please continue!

  11. What if I'll just create a child blueprint class, instead of using construction script? Is there any disadvantage?

  12. 잘 보았습니다.

  13. How come the Light Color changes I set for each instance don't show up in the BP Class Editor details panel,? The detail panel shows the default warm white light regardless of which instance I chose from the drop down menu in the Class Editor, whereas the detail panel in the level editor shows the adjusted light colors?

  14. "One or more blueprints has an unresolved compiler error, are you sure you want to Play in Editor?
    Lightcode"
    what does this mean? D:

  15. Super helpful! Thanks!

  16. I had spent a fair ammount of time trying to figure out why I did not see the preview cone for the spot light. Also later on I could not get the Get Light function to appear. Turns out I did not add my Spot light as component inside the blueprint editor but dragged it from the main view-port. Just a heads up for anyone who might run into this problem, because you're able to get pretty far while doing this the wrong way. Cheers!

  17. It sounds like LGR is teaching UE4~~~ XD

  18. best teacher ever 🙂 i want to learn more from you thank you for this video series

  19. Thank you for your sharing

  20. The best tutorials. Thank you.

  21. Hello
    Why cant i see the "set light color"? (as in time 3:55)
    did something change in the last Unreal Engine?
    I'm using Version: 4.22.3-7053642+++UE4+Release-4.22

    Thanks.

Comment here