"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
언리얼 엔진에서 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 라이브러리의 함수는 대부분 블루프린트에서도 노드로 제공되며, 시각적 스크립팅에 활용됩니다.
블루프린트 예시
- Math Library:
- 벡터 간 거리 계산.
- 회전 보간 함수 사용.
- System Library:
- 디버깅용 PrintString 노드 사용.
- GameplayStatics:
- 모든 NPC를 검색하고 특정 행동을 수행.
3. 장점과 단점
장점
- 다양한 유틸리티 제공:
- 수학, 배열, 문자열, 시스템 작업 등 여러 범위를 아우름.
- 사용 편의성:
- 정적 함수 형태로 제공되어 객체 없이 간단히 호출 가능.
- 블루프린트 지원:
- 모든 함수가 블루프린트에서 직관적으로 사용 가능.
단점
- 남용 위험:
- 지나치게 많이 사용하면 코드가 복잡해질 수 있음.
- 한정된 기능:
- 특정 요구 사항을 충족하지 못할 경우 커스텀 함수 필요.
4. 베스트 프랙티스
- 필요한 라이브러리 선택:
- 적절한 Kismet 라이브러리를 사용하여 코드를 명확히 작성.
- 정적 함수 활용:
- 특정 객체와 무관한 공통 로직에 사용.
- 블루프린트와 연계:
- C++에서 정의한 로직을 블루프린트 노드로 활용하여 협업 환경 강화.
Kismet 라이브러리는 언리얼 엔진 개발자에게 강력한 도구로, 반복적인 작업을 간소화하고 게임플레이 로직을 더 효율적으로 작성할 수 있습니다. 각 라이브러리를 목적에 맞게 활용하면 개발 속도와 코드 품질을 크게 향상시킬 수 있습니다.
🎬 유튜브 채널 🎬
위로그@WiLog
📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌
www.youtube.com
🎬 치지직 채널 🎬
위로그 채널 - CHZZK
지금, 스트리밍이 시작됩니다. 치지직-
chzzk.naver.com