메모내용

Unreal Engine 자주 사용하는 기능

Nav

(검증필요)블루프린트 생성

이 방법을 통해 런타임에 새로운 블루프린트를 생성할 수 있다고 한다. 검증해 볼 필요가 있다.

                        

#include "Engine/Blueprint.h"
#include "Kismet2/KismetEditorUtilities.h"

UFUNCTION(BlueprintCallable, Category="Custom")
static UBlueprint* CreateNewBlueprint(UObject* Outer/* GetTransientPackage() 이런거 적어주나보다*/, FString Name)
{
    if(!Outer) return nullptr;

    UClass* BlueprintClass = UBlueprint::StaticClass();
    UBlueprint* NewBlueprint = FKismetEditorUtilites::CreateBlueprint(BlueprintClass, Outer, FName(*Name), BPPTYPE_Normal, UBlueprint::StaticClass(), UBlueprintGeneratedClass::StaticClass());

    return NewBlueprint;
}
                        
                    

Unreal Engine G-Prefixed Global Variables

GEngine

게임 엔진의 핵심 객체로, 게임의 전반적인 시스템과 관련된 정보 및 기능에 접근할 수 있습니다.

GWorld

현재 활성화된 UWorld 객체로, 게임의 월드 상태를 나타냅니다. 액터와의 상호작용, 레벨 관리, 게임플레이 로직 등이 포함됩니다.

GEditor

Unreal Engine 에디터의 전역 객체로, 레벨 편집, 액터 배치 등 에디터에서 사용되는 기능에 접근할 수 있습니다.

GFrameNumber

현재 프레임을 나타내는 전역 변수입니다. 렌더링 또는 업데이트 주기와 관련된 작업에서 사용됩니다.

GIsEditor

현재 엔진이 에디터 모드에서 실행 중인지 여부를 나타내는 플래그입니다. 에디터 모드와 게임 모드 간의 동작을 구분하는 데 사용됩니다.

GIsPlayInEditorWorld

현재 Play In Editor (PIE) 모드인지 여부를 나타냅니다. 에디터에서 게임을 실행 중인지 확인하는 데 사용됩니다.

GLog

전역 로그 객체로, 디버깅을 위한 로그 메시지를 기록하고 출력할 수 있습니다.

GConfig

전역 설정 객체로, 게임 설정 파일에 접근하고 값을 읽고 쓸 수 있습니다. .ini 파일 등 설정 파일을 관리합니다.

GEngineLoop

엔진의 메인 루프를 제어하는 객체로, 엔진의 초기화, 실행, 종료 루틴을 관리합니다.

GIsGame

현재 엔진이 게임 모드에서 실행 중인지를 나타내는 플래그입니다. 게임 모드와 에디터 모드 간의 차이를 구분하는 데 사용됩니다.

GSlate

Unreal Engine의 Slate UI 시스템에 대한 전역 객체로, Slate UI 시스템과 상호작용할 때 사용됩니다.

GDebugDraw

디버깅용으로 3D 공간에 다양한 시각적 도움을 그릴 수 있게 해주는 전역 객체입니다.

GWarn

경고 메시지나 알림을 출력하는 전역 객체로, 디버깅 콘솔 또는 사용자에게 경고 메시지를 전달하는 데 사용됩니다.

GEditorModeTools

Unreal Engine 에디터 모드 도구를 제어하는 전역 객체입니다. 현재 활성화된 에디터 모드의 도구와 관련된 작업을 관리합니다.

GBlackboard

AI 관련 작업에서 사용되는 전역 블랙보드 객체입니다. AI 시스템에서 정보를 공유하고 행동을 제어할 때 사용됩니다.

GCurrentLevelEditingViewportClient

현재 편집 중인 레벨의 뷰포트 클라이언트를 나타내는 전역 변수입니다.

GDistanceFieldAsyncQueue

거리 필드 계산을 비동기로 처리하는 큐를 나타냅니다.

GIsServer

현재 엔진이 서버로 실행되고 있는지 여부를 나타내는 플래그입니다.

GIsClient

현재 엔진이 클라이언트로 실행되고 있는지 여부를 나타내는 플래그입니다.

GShaderCompilingManager

셰이더 컴파일링을 관리하는 전역 객체입니다.

GStreamableManager

스트리밍 가능한 자산을 관리하는 전역 객체입니다. 텍스처, 메쉬 등의 로딩과 언로딩을 제어합니다.

GStatManager

성능 통계 데이터를 수집하고 관리하는 전역 객체입니다. FPS, 메모리 사용량 등 성능 통계를 기록합니다.

GFrameCounter

현재까지 진행된 총 프레임 수를 나타내는 전역 변수입니다.

GIsRequestingExit

게임 또는 에디터가 종료 요청을 받았는지 여부를 나타내는 변수로, 종료 시 안전한 자원 해제를 위해 사용됩니다.

GDynamicRHI

동적 RHI (Rendering Hardware Interface)를 나타내는 전역 객체입니다.

GInputLatencyTimer

입력 지연 시간을 측정하는 타이머로, 입력 지연과 관련된 성능 분석에 사용됩니다.

GEngineVersion

현재 사용 중인 Unreal Engine의 버전을 나타내는 전역 변수입니다.

GNewWorld

새로 생성된 월드를 나타내는 전역 변수입니다.

GObjectArray

Unreal Engine의 모든 객체를 관리하는 배열로, UObject 기반의 객체들을 관리합니다.

GRenderTargetPool

렌더 타겟을 관리하는 풀로, 렌더 타겟을 재사용할 수 있도록 관리합니다.

GFirstFrameInLoop

엔진 루프에서 첫 번째 프레임인지 여부를 나타내는 플래그입니다.

GGameThreadId

게임 스레드의 ID를 나타내는 전역 변수입니다.

GIsSlowTask

현재 느린 작업이 진행 중인지를 나타내는 플래그입니다.

GScreenWidth / GScreenHeight

현재 화면(또는 뷰포트)의 너비와 높이를 나타내는 전역 변수입니다.

GAllowCommandletRendering

Commandlet 실행 시 렌더링을 허용할지 여부를 나타내는 플래그입니다.

GMaxFrameCounter

Unreal Engine이 유지할 수 있는 최대 프레임 카운터 값입니다.

GPhysCommandHandler

물리 명령을 처리하는 핸들러입니다.

GLastGCFrame

마지막으로 가비지 컬렉션이 수행된 프레임을 나타냅니다.

GNearClippingPlane

카메라의 근거리 클리핑 평면 값을 나타내는 전역 변수입니다.

GExitPurge

게임 또는 에디터가 종료되는 중인지 여부를 나타냅니다.

GFrameTime

현재 프레임의 시간을 나타내는 전역 변수로, 성능 최적화에 사용됩니다.

GIsDemoMode

데모 모드(게임 시연 모드)인지 여부를 나타내는 플래그입니다.

GSystemResolution

시스템 해상도를 나타내는 전역 변수입니다.

GShaderPlatformForFeatureLevel

각 피처 레벨에 대해 사용되는 셰이더 플랫폼을 나타냅니다.

GTextureStreamingManager

텍스처 스트리밍을 관리하는 매니저입니다.

GIsEditorLoadingPackage

에디터에서 패키지를 로드 중인지 여부를 나타냅니다.

GEngineStartTime

엔진이 시작된 시간을 나타내는 전역 변수입니다.

GEnableVREditor

VR 에디터 모드를 활성화할지 여부를 나타내는 플래그입니다.

GRunningUnattendedScript

자동으로 실행되는 스크립트가 실행 중인지 나타냅니다.

GUseBackgroundLevelStreaming

레벨 스트리밍이 백그라운드에서 처리될지 여부를 설정하는 플래그입니다.

Slate & UMG

Unreal Engine 에서 Slate 와 UMG(User Interface Management) 는 둘다 UI 를 구성하는데 사용되는 시스템이지만, 그들의 목적과 사용방식에는 몇가지 중요한 차이점이 있습니다. 이 두 시스템은 서로 보완적인 역할을 하며, 프로젝트의 요구사항에 따라 선택적으로 사용될 수 있습니다. 때로는 두 시스템을 함께 사용하여, UMG 에서 기본 UI 를 구성하고 필요한 부분을 Slate 로 세밀하게 제어하는 방식도 가능합니다.

Slate

더 저수준이며, C++ 기반으로 작성되어 세밀한 제어가 가능하지만, 초기학습이 어렵습니다. 고성능과 유연성이 필요할 때 사용됩니다.

  • 저수준 UI 프레임워크 : Slate 는 저수준의 c++ 기반 UI 프레임워크로, 보다 세밀한 제어와 커스터마이징이 가능합니다.
  • 고성능 : 직접 C++ 로 작성되기 때문에, 성능 면에서 더 뛰어날 수 있습니다.
  • 코드기반 : Slate UI 는 대부분 c++ 코드로 작성됩니다. 이로 인해 초기학습곡선이 가파를 수 있지만, 한번 익숙해지면 매우 강력한 UI 를 만들수 있습니다.
  • 유연성 : Slate 는 매우 유연하고 확장성이 높아, 엔진 자체의 UI 를 구성ㅇ하는 데 사용됩니다. 예를 들어 Unreal Editor 자체가 Slate 로 작성되어 있습니다.

UMG (Unreal Motion Graphics)

고수준이며 Blueprint 기반으로 시각적 편집기를 제공하여 사용하기 쉽습니다. 빠른 프로토타이핑과 디자이너 친화적인 작업 환경을 제공합니다.

  • 고수준 UI 프레임 워크 : UMG 는 고수준의 Blueprint 기반 UI 툴입니다. 디자이너와 아티스트가 사용하기 쉽게 설계되었습니다.
  • Blueprint 지원 : UMG 는 Blueprint 와 통합되어 있어 프로그램이 지식이 부족한 사람들도 쉽게 UI 를 작성할 수 있습니다.
  • 시각적 편집기 : UMG 는 WYSIWYG(What You See Is Waht You Get) 방식의 시각적 편집기를 제공합니다. 이를 통해 UI 를 시각적으로 배치하고, 속성을 조정하며, 애니메이션을 추가하는 것이 쉽습니다.
  • 손쉬운 사용 : UMG 는 사용이 간편하며, 빠른 프로토타이핑에 적합합니다. 직관적인 인터페이스와 다양한 위젯을 통해 빠르게 UI 를 구성할 수 있습니다.