기본 콘텐츠로 건너뛰기

[Unreal Engine] Blueprint

블루프린트 관련 Tip 정리


Blueprint - 일반

리플렉션 관련


단축키

  • (빈공간에서) 우클릭 또는 Tab키 : 노드 검색
  • C : 주석
  • Ctrl + 드래그 : Getter node
  • Alt + 드래그 : Setter


Dispatcher 맞춤형 (Bind와 Unbind용도의) Custom Event 노드 생성 방법


빨간 네모 당긴 후 (새 노드 배치) → "이벤트 추가" → " Add Custom Event..."




블루프린트 경유노드 생성 (Blueprint Route Node)

선 중앙 더블클릭

라인 제거


alt 키 누르고 선 클릭

라인 제거하지 않고, 단순히 다른 부분에 연결하고 싶을 때


ctrl 키 누르고 선 클릭 유지 (이 때 클릭 지점에서 제일 가까운 부분이 끊긴다) 원하는 지점에 부착. 


Animation Blueprint

  • 생성 : 스켈레톤 필요

    • 스켈레톤 변경 방법 : 블루프린트에서 “클래스 세팅” → “디테일” → “고급” → “타겟 스켈레톤”



C++ 자료 유형 매핑

  • uint8 (C++) ↔ byte (BP)
    • TArray<uint8> ↔ byte Array
  • TMap (C++)
    • 방법 1 : 구조체 사용
      • 복잡한 Value의 경우 구조체(USTRUCT)로 구성.
      • Key 값도 구조체로 구현 가능. 단, "=="연산자와 GetTypeHash에 대한 추가 구현이 필요함.
    • 방법 2 (우회) : 별도의 클래스에서 TArray 2개를 만들고, 내부 다른 함수를 TMap처럼 설계. 즉, 임의로 만든 클래스를 TMap처럼 취급. 


인스턴스 ↔ 블루프린트 변경 값 적용


  • 아웃라이너에서 Blueprint Actor 선택
  • 디테일 패널에서 "+추가" 오른쪽에 있는 "이 액터의 블루프린트 편집" 버튼 클릭
  • "인스턴스 변경" 부분에 있는 두 개의 메뉴 중 원하는 항목 선택




시퀀스 노드 (Sequence)




  순차적으로 실행 pin을 실행하는 노드. (위 사진 기준으로 Then 0 → Then 1 → Then 2 ... ) 
Blueprint 실행핀 정리에 유용하다.
  그냥 Sequence만 검색을 하면, 애니메이션 시퀀스가 먼저 검색되기 때문에 앞부분에 flow를 같이 붙여주면 좋다. 



요소 값 수정

구조체 (USTRUCT)


  구조체 내부에 함수를 정의할 때, 해당 함수에는 UFUNCTION을 사용할 수 없으므로 (UFUNCTION은 UCLASS 기반 클래스에서만 동작) BP에서 Setter 함수를 사용할 수 없음.
  구조체를 (구조체 전체 또는 특정 변수 값) 수정하기 위해서는 아래와 같은 방법을 이용해야한다.

  • Break Struct 노드를 이용하여 구조체를 분해
  • 위에서 분해한 구조체를 Make Struct 노드를 이용하여 다시 조립. 여기서 변경하고 싶은 값은 변경한다.

UE 5.3 부터 "Set Members in 구조체이름" 노드가 제공된다고 한다. 내부적으로 Break, Make Struct를 포함하고 있다고 생각하면 된다. 아래와 같은 방법을 이용하면 된다.

  • "Set Members in 구조체이름" 노드 생성
  • 생성한 노드를 클릭하면 "디테일" 부분에 "핀 옵션" 부분에 항목이 보인다.
  • 원하는 핀을 체크하면 "Set Members in 구조체이름" 노드에 체크한 핀이 추가된다.
  • "Struct Ref" 부분에 원본 구조체를 넣고, 추가된 핀에 새로운 값을 할당한다.
  • "Struct Out"에 수정된 구조체가 반환된다. (반드시 변수에 저장할 것!)






맵 TMap<Key, Value>


Add 노드를 이용하여 이미 존재하는 Key에 Value를 할당하는 경우. Value가 덮어써진다. (Overwrite)


배열 TArray


"Set Array Elem" 노드를 활용한다.
"Size To Fit"가 true인 경우, 인덱스가 배열 길이보다 크면 자동으로 사이즈를 증가한다.























기타 주의 사항


  • Blueprint에서 EventDispatcher의 파라미터에 배열을 넘길 때, 값이 잘 넘어가는지 디버깅 할 필요가 존재함.
  • 파라미터 추가 및 기본 값 설정을 한 후, 외부에서 해당 노드를 사용하는 경우, 해당 기본 값이 제대로 설정되는지 확인할 것.
    • boolean의 디폴트 값을 true 했음에도 불구하고, false로 넘어가는 경우가 있다. 초기화 버그인 것 같으니, 체크 박스의 체크를 해제했다가 다시 체크하면 해결되기는 함.


Blueprint - Material 편집모드


단축키

  • 벡터 파라미터 (황색 노드) : V + 마우스 왼클릭
    • 새로 만든 머티리얼에 RGB 추가

머티리얼을 새로 만들었을 때, Blueprint 내부에서 단순히 RGB 값만 넣고 싶다면 Constant3Vector 노드를 생성하면된다.


  • 스칼라 파라미터 (연두색 노드) : S + 마우스 왼클릭
    • 단일 float
  • Texture Sample Parameter 2D (파랑 노드) : T + 마우스 왼클릭



2D Vector Input


  • 방법 1 : Scalar Parameter 2개 이용
    • Scalar Parameter 노드 2개 생성 + Append 노드로 결합
  • 방법 2 : Vector Parameter 이용
    • R채널에 X값, G채널에 Y값을 이용하거나
    • Component Mask (RG)를 이용하여 XY값만 이용
    • 다만 이 방법은 input이 texture 형태처럼 보임




함수 내부에서 (Bind를 위한) Event 노드 생성 우회방법


  Event노드는 EventGraph 부분에서만 생성 가능하다. 때문에 함수 내부에서는 Event 노드를 생성이 불가능하기 때문에 편법을 사용해야 된다.

  • EventGraph 부분에서 임의의 Event 함수를 만들고, Bind 기능이 필요한 객체를 파라미터로 설정.
  • 함수 내부에서는 위에서 만든 Event 함수를 호출











댓글