본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진에서 블루프린트 함수 라이브러리 란 무엇이며, 어떻게 활용할 수 있나요?

by 밝음의기둥 2024. 12. 30.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진에서 블루프린트 함수 라이브러리 란 무엇이며, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

언리얼 엔진에서 블루프린트 함수 라이브러리 란 무엇이며, 어떻게 활용할 수 있나요?

답변 >

언리얼 엔진에서 블루프린트 함수 라이브러리 (Blueprint Function Library)는 공통적으로 사용되는 기능을 블루프린트에서 호출할 수 있도록 정적 함수를 정의하는 클래스입니다. 이 클래스는 게임 내에서 특정 기능을 재사용하고, 코드의 중복을 줄이며, 유지보수를 용이하게 하는 데 유용합니다.


1. 특징

  • 블루프린트 함수 라이브러리는 C++로 작성된 클래스이며, 주로 정적(static) 함수로 구성됩니다.
  • 객체 인스턴스 없이 호출할 수 있으므로, 특정 컨텍스트나 클래스에 종속되지 않습니다.
  • 함수는 다양한 클래스나 액터에서 사용할 수 있습니다.
  • 주로 전역적으로 사용 가능한 **도구형 함수(Utility Function)**를 정의하는 데 사용됩니다.

2. 사용 예시

(1) 블루프린트 함수 라이브러리 클래스 생성

C++ 클래스 정의

  • 클래스 생성: 언리얼 에디터에서 C++ 클래스 추가 기능을 통해 BlueprintFunctionLibrary를 부모로 설정하여 새 클래스를 생성합니다.
  • 클래스 코드 작성:
#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"

UCLASS()
class MYGAME_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
    GENERATED_BODY()

public:
    // 블루프린트에서 사용할 정적 함수 선언
    UFUNCTION(BlueprintCallable, Category = "CustomUtilities")
    static float AddTwoNumbers(float A, float B);
};

  • 함수 구현:
#include "MyBlueprintFunctionLibrary.h"

float UMyBlueprintFunctionLibrary::AddTwoNumbers(float A, float B)
{
    return A + B;
}


(2) 블루프린트에서 사용

  • 컴파일 후 에디터 열기:
    • C++ 코드를 컴파일한 뒤, 블루프린트 에디터에서 해당 함수를 호출할 수 있습니다.
  • 블루프린트 노드로 호출:
    • 블루프린트의 그래프에서 AddTwoNumbers 함수를 검색해 사용.
    • 두 개의 숫자를 입력으로 받아 합산 결과를 출력합니다.

3. 활용 방법

(1) 유틸리티 함수 정의

공통적으로 사용되는 계산, 문자열 조작, 배열 처리 등의 기능을 구현.

UFUNCTION(BlueprintCallable, Category = "MathUtilities")
static float CalculateDistanceBetweenVectors(FVector PointA, FVector PointB)
{
    return FVector::Dist(PointA, PointB);
}

  • 활용 예시:
    • 두 위치 간의 거리를 계산하는 블루프린트 노드.

(2) 게임플레이 로직 단순화

복잡한 게임플레이 로직을 함수로 캡슐화하여 간소화.

UFUNCTION(BlueprintCallable, Category = "Gameplay")
static bool IsPlayerNearTarget(AActor* Player, AActor* Target, float Distance)
{
    if (!Player || !Target) return false;
    return FVector::Dist(Player->GetActorLocation(), Target->GetActorLocation()) <= Distance;
}

  • 활용 예시:
    • 플레이어가 특정 대상에 가까운지 확인하는 조건을 블루프린트로 쉽게 처리.

(3) 디버깅 도구

디버깅을 돕는 유틸리티 함수 작성.

UFUNCTION(BlueprintCallable, Category = "Debug")
static void LogMessage(FString Message)
{
    UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
}

  • 활용 예시:
    • 게임 실행 중 특정 정보를 로그에 출력.

(4) 데이터 조작

배열, 맵 등의 데이터 구조를 조작하는 함수 작성.

UFUNCTION(BlueprintCallable, Category = "ArrayUtilities")
static TArray<int32> FilterArrayByThreshold(const TArray<int32>& InputArray, int32 Threshold)
{
    TArray<int32> FilteredArray;
    for (int32 Value : InputArray)
    {
        if (Value > Threshold)
        {
            FilteredArray.Add(Value);
        }
    }
    return FilteredArray;
}

  • 활용 예시:
    • 블루프린트에서 배열을 필터링하여 조건에 맞는 값만 반환.

4. 장점과 단점

장점

  1. 코드 재사용성:
    • 공통적으로 사용되는 기능을 캡슐화하여 재사용 가능.
  2. 블루프린트와 C++의 통합:
    • 블루프린트에서 C++ 함수 호출 가능.
  3. 유지보수 용이:
    • 특정 로직을 한 곳에서 관리하므로 유지보수 간소화.

단점

  1. 초기 설계 필요:
    • 잘못 설계되면 오히려 코드가 복잡해질 수 있음.
  2. 추가 학습 곡선:
    • 블루프린트 사용자에게 C++ 함수의 동작을 이해시키는 데 추가 시간이 소요.

5. 베스트 프랙티스

  1. 모듈화:
    • 관련된 함수들을 하나의 라이브러리에 그룹화.
    • 예: MathUtilities, GameplayUtilities 등.
  2. 직관적인 네이밍:
    • 함수 이름과 설명이 명확하여 블루프린트 사용자들이 쉽게 이해하도록 작성.
  3. 블루프린트 친화적인 설계:
    • 입력/출력 매개변수를 직관적으로 정의.
    • 복잡한 자료형 사용 시, 상세한 주석 추가.
  4. 테스트 및 검증:
    • 블루프린트에서 사용하기 전에 C++에서 충분히 테스트.

블루프린트 함수 라이브러리는 언리얼 엔진에서 코드의 효율성을 극대화하고, 블루프린트 개발자와 협업을 원활히 할 수 있는 강력한 도구입니다. 공통 기능을 정리하고 프로젝트 전반에서 활용하면 생산성을 높이고 코드 품질을 유지할 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형