FCB - Blueprints (2)

JUSTICE_DER·2023년 2월 18일
0

🌵UNREAL

목록 보기
11/42

Unreal Engine 5 – Full Course for Beginners
https://www.youtube.com/watch?v=6UlU_FsicK8

Blueprint: Structures

  • Blueprint - 구조체 를하면 해당 struct를 만들 수 있다.
    C++에서의 구조체와 다르다. 그냥 멤버변수만 선언할 수 있다.
    blueprint에서의 struct는 멤버 함수를 가질 수 없다.

  • 아래처럼 변수만 가질 수 있다.
    중요하다고 하는데, 구조체에서 변수를 삭제하는 것을 지양하라고 한다.
    종종 블루프린트에서 오류가 발생한다고 함.

  • 블루프린트에 struct이름을 쳐서 노드를 추가할 수도 있지만,
    변수를 생성하고, 해당 변수 타입을 이름을 쳐서 바꿀 수도 있다.

  • 추가로 구조체 핀분할을 하면 아래처럼 변수가 나뉘게 getter를 만들 수 있다.

  • 참고로 구조체를 초기화하는 방법은 아래와 같다.
    노드 세부설정에서 핀옵션을 키면, 직접 선언도 가능하고, 각각 받아와서 선언도 된다.
    그냥 set member "구조체이름" 하니까 액션이 뜬다
    이게 편리한건지 아니면 너무 구체적인건지 아직 애매한 것 같다.

  • 추가로, 파랑 분홍 초록 3가지의 핀이 있었는데,
    이 중 다이아몬드는 참조를 받는 것이고,
    수컷모양?은 직접 입력하는 그런 느낌이라고 한다.


Blueprint: Enumeration

  • enum은 다음과 같이 생성한다.
    struct와 만드는 방법은 거의 동일하다.


  • enum은 내부적으로 그냥 0~256까지를 나타내는 숫자에 불과하다.
    twilight-0 / eclipse-1 / newmoon-2

  • 해당 enum문을 switch에 당연히 쓸 수 있다.
    번역이 이상하다. switch on myEnum을 "켜기"로 번역..

  • 다음과 같이 만들어 보았다.

  • 시작부터 순서대로 보면,

  1. print string으로 현재 enum을 그대로 출력하고,
  2. SET으로 enum 중 moon으로 값을 set하고 출력하고,
  3. select문으로 enum의 값에 따른 반환을 출력하고,
  4. enum값에 따른 switch문으로 출력을 하도록 하였다.
  • 결과는 아래와 같고,
    twilight - eclipse - 이클립스 - Eclipse == 이클립스
    순서로 출력되었다.

Blueprint: Functions

  • function을 만들 수 있다. 만들면 해당 함수에 대한 탭이 열리게 된다.

  • 다음과 같이, 함수의 입력과 출력을 받을 수 있다.
    아래는 int a와 b의 덧셈을 반환하는 함수이다.

  • 메인에서는 아래와같이 인자를 전달하고, 받아서 실행할 수도 있다.

  • 아래와 같이 20 이하면 bool값을 참, 거짓으로 리턴하는 함수를 만들었고,

  • 미리 30으로 설정된 health값을 매개변수로 함수에 넣었다.
    결과는 false.

  • 참고로 + < <= 등 연산기호를 그냥 작성하면 연산자 함수가 나오게 되는데,
    A와 B가 존재하고, 뭐가 어디에 들어가야하는지는 더블클릭을 하면 나온다.

  • A<=B이므로, 더 큰 값이 오른쪽에 있어야, 참인 것이다.

  • 당연히 로컬변수를 추가할 수도 있다.

Blueprint: Macros

  • 기본적으로 블루프린트의 function 내에는 delay함수를 추가할 수 없다.

  • 아래가 진짜 delay이다.

  • 이를 매크로기능으로 해결할 수 있다.
    시퀸스는 함수에서도 사용이 가능한 기능이다.
    아래처럼 3가지를 순서대로 하는 매크로를 작성했고, 마지막이 delay를 하도록 해보았다.

  • health를 10으로 만들고서, print로 isHit을 출력하고, delay하는 매크로이다.

  • 각 매크로를 아래의 기능에 각각 연결시켰다.
    먼저 health를 고친 값을 이전에 만든 MyFunc의 인자로 넣어 bool값을 출력하도록 하였고,

  • delay 기능을 수행 후, effect라는 print문과, 현재 health값을 표시하는 print문을 두었다.

  • 결과 : delay가 정상동작하는 것을 볼 수 있다.

  • 블루프린트에서의 Macro는 그냥 delay를 사용할 수 있는 특수 Function의 느낌이다.
    입력과 출력값도 따로 설정이 가능하다.
    해당 Macro기능은, 지연을 할 수 있는 매개변수도 받을 수 있는 함수라는 점에서 유니티의 코루틴 같기도 하다.


Blueprint: Collapsed Graph

  • Macro와 Fuction의 차이는 또 있다.
    레벨 블루프린트가 아닌, 액터 등 블루프린트를 만들 경우,
    해당 외부 블루프린트에서의 함수는 레벨블루프린트로 불러올 수 있지만, 매크로는 아니다.
    함수도 private걸면 보지못하게 할 수도 있긴 하다.

  • collapse graph는 해당 그래프를 축약하는 방식을 의미한다.

  • 접으면 아래처럼 단 하나의 노드로 표시가 되고, 직접 들어가서 수정도 된다.

    Collapsed Graph 등 축약 방식


Blueprint: Branching

  • D를 누르면서 마우스 왼쪽을 누르면 delay노드가 나왔듯이,
    B를 누르면서 마우스 왼쪽을 누르면 branch노드가 나오고,
    if문을 의미한다.

Blueprint: Switch

  • blueprint에서의 switch는 다음과 같이 사용한다.
    시작 인덱스를 설정할 수 있으며, 핀을 추가할때마다 1씩 증가한다.
    1씩 증가하는게 상당히 불편하다.
    switch문과 마찬가지로 default 상태가 존재한다.

  • 일반적으로, enum과 같이 사용한다 상단의 enum부분 참고

Blueprint: While Loop

  • while문은 아래처럼 사용한다.

  • 0부터 10이하까지 반복하므로 총 11번의 Hello가 출력되고,
    end로 마친다.

  • blueprint는 C++에 비해 많이 느리다. JVM처럼 동작하는 식이라고 한다.


Blueprint: For Loop

  • for문이 더 단순하다.
  • 아래와 같은 결과가 나온다.

  • for loop말고 for loop with break를 사용하면, break걸 수도 있다.
    아래처럼 사용한다.


Blueprint: Array

  • blueprint에서 배열은 아래처럼 만든다.
    기존 자료형 변수에 배열부분을 눌러 만들게 된다.

  • 배열을 만들고 아래처럼 for each문을 작성할 수 있다.

  • blueprint는 Array는 지원하지만, Linked List는 지원하지 않는다. 주로 Array와 Map을 쓸 것이라고 한다.


Blueprint: Flip-Flop

  • blueprint의 특수노드로 flip-flop이 있다.

  • flip-flop을 거칠때마다 A와 B가 번갈아 실행되는 유용한 함수.
    주로 플레이어 무기의 범위같은 요소를 위해 사용된다고 한다.


Blueprint: Do-Once

  • blueprint의 특수노드로 Do-Once가 있다.
    단 한번만 실행이 가능한 기능이다.

  • 단 한번 작동하고, closed 되지만,
    reset을 누가 동작시킨다면, 다시 한번 사용이 가능해지는 특징이 있다.

profile
Time Waits for No One

0개의 댓글