프로그래밍

👨‍💻 [Unreal] 언리얼 엔진에서 Kismet 라이브러리 는 무엇이며, 어떻게 활용할 수 있나요?

밝음의기둥 2024. 12. 31. 08:37
반응형

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


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

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


질문 >

언리얼 엔진에서 Kismet 라이브러리 는 무엇이며, 어떻게 활용할 수 있나요?

답변 >

Kismet 라이브러리는 언리얼 엔진에서 제공하는 유틸리티 함수의 집합으로, 게임플레이 로직 구현을 돕는 기능들을 제공합니다. 특히, Kismet은 블루프린트와의 통합을 강조하는 이름으로, 이 라이브러리들은 주로 C++과 블루프린트에서 공통적으로 사용됩니다.

Kismet 라이브러리의 주요 클래스들은 특정 작업에 특화된 정적 함수 집합을 제공합니다. 대표적으로 다음과 같은 라이브러리가 포함됩니다:


1. 주요 Kismet 라이브러리 클래스

(1) UKismetSystemLibrary

  • 시스템 관련 유틸리티 함수 제공.
  • 디버깅, 객체 정보, 로딩/저장 등의 작업 지원.

주요 함수

  • 로그 출력:
    • 문자열을 화면 및 로그에 출력.
    • 디버깅에 유용.
UKismetSystemLibrary::PrintString(GetWorld(), TEXT("Hello, World!"), true, true, FLinearColor::Green, 2.0f);

  • 오브젝트 존재 확인:
if (UKismetSystemLibrary::IsValid(SomeActor))
{
    UE_LOG(LogTemp, Warning, TEXT("Actor is valid"));
}

  • 레벨 전환:
UKismetSystemLibrary::OpenLevel(this, FName("LevelName"));

  • 데이터 저장/불러오기:
    • JSON 데이터를 파일로 저장하거나 읽는 기능 포함.

(2) UKismetMathLibrary

  • 수학 관련 함수 제공.
  • 벡터 연산, 변환, 수학적 계산 등을 간편하게 수행 가능.

주요 함수

  • 선형 보간 (Lerp):
FVector InterpolatedVector = UKismetMathLibrary::VLerp(Start, End, Alpha);

  • 회전 보간 (RInterp):
FRotator InterpolatedRotator = UKismetMathLibrary::RInterpTo(CurrentRot, TargetRot, DeltaTime, InterpSpeed);

  • 랜덤 값 생성:
int32 RandomInt = UKismetMathLibrary::RandomIntegerInRange(0, 100);

  • 삼각함수 및 각도 변환:
float Radians = UKismetMathLibrary::DegreesToRadians(90.0f);


(3) UKismetGameplayStatics

  • 게임플레이 관련 유틸리티 함수 제공.
  • 특정 클래스의 모든 액터 검색, 사운드 재생, 레벨 로딩 등의 작업 지원.

주요 함수

  • 액터 검색:
TArray<AActor*> FoundActors;
UKismetGameplayStatics::GetAllActorsOfClass(GetWorld(), AMyActor::StaticClass(), FoundActors);

  • 사운드 재생:
UKismetGameplayStatics::PlaySoundAtLocation(GetWorld(), MySound, ActorLocation);

  • 레벨 로드:
UKismetGameplayStatics::OpenLevel(this, FName("NewLevel"));


(4) UKismetArrayLibrary

  • 배열 관련 작업에 특화된 함수 제공.
  • 블루프린트 배열 조작을 효율적으로 구현 가능.

주요 함수

  • 배열에 요소 추가:
UKismetArrayLibrary::Array_Add(IntArray, 42);

  • 배열 정렬:
UKismetArrayLibrary::Array_Sort(IntArray);

  • 요소 검색:
int32 Index = UKismetArrayLibrary::Array_Find(IntArray, 42);


(5) UKismetStringLibrary

  • 문자열 관련 작업 지원.
  • 텍스트 조작, 변환, 검색 등을 간단히 수행 가능.

주요 함수

  • 문자열 연결:
FString CombinedString = UKismetStringLibrary::Concat_StrStr(TEXT("Hello, "), TEXT("World!"));

  • 문자열 포함 여부 확인:
bool bContains = UKismetStringLibrary::Contains(TEXT("Hello, World!"), TEXT("World"));

  • 숫자 → 문자열 변환:
FString NumberString = UKismetStringLibrary::Conv_IntToString(123);


2. 활용 방법

(1) C++ 코드에서 활용

Kismet 라이브러리는 정적 함수로 제공되므로, 객체를 생성하지 않고 바로 호출 가능합니다.

예시: 특정 조건에 따라 액터의 위치 변경

if (UKismetSystemLibrary::IsValid(SomeActor))
{
    FVector NewLocation = UKismetMathLibrary::Add_VectorVector(SomeActor->GetActorLocation(), FVector(100, 0, 0));
    SomeActor->SetActorLocation(NewLocation);
}


(2) 블루프린트와의 통합

Kismet 라이브러리의 함수는 대부분 블루프린트에서도 노드로 제공되며, 시각적 스크립팅에 활용됩니다.

블루프린트 예시

  1. Math Library:
    • 벡터 간 거리 계산.
    • 회전 보간 함수 사용.
  2. System Library:
    • 디버깅용 PrintString 노드 사용.
  3. GameplayStatics:
    • 모든 NPC를 검색하고 특정 행동을 수행.

3. 장점과 단점

장점

  1. 다양한 유틸리티 제공:
    • 수학, 배열, 문자열, 시스템 작업 등 여러 범위를 아우름.
  2. 사용 편의성:
    • 정적 함수 형태로 제공되어 객체 없이 간단히 호출 가능.
  3. 블루프린트 지원:
    • 모든 함수가 블루프린트에서 직관적으로 사용 가능.

단점

  1. 남용 위험:
    • 지나치게 많이 사용하면 코드가 복잡해질 수 있음.
  2. 한정된 기능:
    • 특정 요구 사항을 충족하지 못할 경우 커스텀 함수 필요.

4. 베스트 프랙티스

  1. 필요한 라이브러리 선택:
    • 적절한 Kismet 라이브러리를 사용하여 코드를 명확히 작성.
  2. 정적 함수 활용:
    • 특정 객체와 무관한 공통 로직에 사용.
  3. 블루프린트와 연계:
    • C++에서 정의한 로직을 블루프린트 노드로 활용하여 협업 환경 강화.

Kismet 라이브러리는 언리얼 엔진 개발자에게 강력한 도구로, 반복적인 작업을 간소화하고 게임플레이 로직을 더 효율적으로 작성할 수 있습니다. 각 라이브러리를 목적에 맞게 활용하면 개발 속도와 코드 품질을 크게 향상시킬 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

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

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

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

chzzk.naver.com


반응형