#1. 개념 1. 인자 바인딩Unreal에서 인자가 없는 델리게이트/이벤트에 콜백 함수를 등록할 때, 해당 콜백이 호출될 때 사용될 추가 인자를 미리 지정하는 기능입니다. 이를 통해, 콜백 함수는 델리게이트 선언 시 인자가 없지만, 바인딩 시점에 지정된 인자 값은 델리게이트/이벤트가 호출될 때마다 콜백 함수에 해당 인자가 전달됩니다. 이 기능을 통해 콜백 함수에 추가적인 콘텍스트나 추가 정보를 전달할 수 있습니다. 2. 동작 방식//@이벤트 선언DECLARE_MULTICAST_DELEGATE(FSomeDelegate)class SomeClass{public: FSomeDelegate SomeDelegate;};//@콜백 선언class AnotherClass{protected: UFUNCTION..
게임개발
#1. 개념 1. Input ModeUnreal Engine에서 PlayerController는 입력 모드를 통해 게임 내에서 입력이 어떻게 처리될지를 결정합니다. 주요 Input Mode는 3가지로, FInputModeGameOnly, FInputModeUIOnly, 그리고 FInputModeGameAndUI가 있습니다. 2. FInputModeGameOnly입력을 게임 월드에 전달하고, 마우스 커서를 기본적으로 숨기지만 별도의 설정을 통해 나타내는 것 또한 가능합니다. 주로 게임 플레이 중에 사용됩니다. 다만, FInputModeGameOnly의 경우, 마우스 커서를 나타내는 것은 가능하지만 기본적으로 UI 요소로서의 자동 입력 라우팅을 비활성화합니다. 따라서, FInputModeGameOnly를 ..
1. UI 성능 1. PaintPaint 함수는 Unreal Engine에서 UI 요소를 화면에 그리기 위해 호출됩니다. 이 함수는 위젯의 렌더링 정보를 Slate Element Batcher에 전달합니다. 위젯 트리의 상속 구조에서 Paint 함수는 모든 자손 위젯에 대하여 재귀적으로 호출되며, 각 위젯의 BP 함수 호출 및 Tick 함수를 호출합니다. 이 함수들은 Hit Test Grid(쿼드 트리로 위젯의 Hit Testing과 Navigation을 수행)의 재 빌드를 유발하며, 성능에 많은 영향을 끼칩니다. 더불어, 위젯 트리의 과도한 상속 구조는 CPU의 잦은 Vtable 접근을 유발하며, 캐시 미스가 발생합니다. *Unreal Insight의 Draw Window를 통해 확인 가능합니다. ..
#1. UFUNCTION 매크로 1. 개념UFUNCTION()은 언리얼 엔진에서 C++ 함수를 엔진의 에디터에서 상호 운용이 가능하도록 해주는 매크로입니다. 이를 통해, C++ 환경에서 선언한 함수를 블루프린트에서 호출하거나, 정의하거나, 혹은 오버라이딩 할 수 있습니다. 2. 특징블루프린트와 C++간 상호 운용성 제공리플렉션 시스템 지원으로 런 타임에 함수 정보 접근 가능네트워크 리플리케이션, RPC 등 고급 기능 활성화 3. 종류BlueprintCallableBlueprintImplementableEventBlueprintNativeEventServerClientNetMulticastExec #1. BlueprintCallable 1. 개념BlueprintCallable 키워드는 UFUCNTION ..
#1. 개념 1. 비동기 프로그래밍비동기 프로그래밍은 프로그램의 주 실행 흐름을 차단하지 않고, 작업을 병렬적으로 수행할 수 있게 해주는 프로그래밍 패러다임입니다. 이는 이전 작업의 완료를 기다리지 않고, 병렬적으로 작업들을 수행하며 프로그램의 응답성 향상과 리소스의 효율적인 활용을 목표로 합니다. 다만, 비동기 프로그래밍은 코드 복잡성 증가, 디버깅 어려움, 그리고 오 사용 시 발생하는 race condition 등의 몇 가지 단점 혹은 주의할 점이 있습니다. 2. 특징비 차단 실행: 시간이 오래 걸리는 작업을 호출한 뒤, 해당 작업의 완료까지 기다리지 않고 즉시 다음 작업을 실행합니다. 이를 통해, 프로그램의 응답성을 향상할 수 있습니다.병렬성: 여러 작업을 동시에 수행합니다. Promise/Fut..
#1. ESlateVisibility 1. 개념MyWidget->SetVisibility(ESlateVisibility::HitTestInvisible)ESlateVisibility는 언리얼 엔진의 Slate Framework에서 위젯의 가시성을 제어하는 데 사용되는 열거형입니다. 2. 종류Visible: 위젯이 완전히 표시되고, 상호작용 가능한 상태입니다. 위젯이 렌더링 된 이후 사용자와 상호작용 가능하며, 매 프레임마다 렌더링 되어 화면에 나타납니다.Collapsed: 위젯이 완전히 숨겨지고, Layout 공간을 차지하지 않습니다. Collapsed 설정은 위젯이 렌더링 되지 않도록 하고, 해당 위젯이 차지하는 Geometry 공간에 대한 계산이 이루어지지 않습니다. 따라서, Collapsed 설정..
#1. Delegate 1. 개념// SomeActor.hDECLARE_DELEGATE(FSomeDelegate);UClass()class SomeActor : public AActor{ GENERATE_BODY()public: SomeActor();public: FSomeDelegate SomeDelegate;};// AnotherActor.hclass SomeActor;UClass()class AnotherActor : public AActor{ GENERATE_BODY()public: AnotherActor();public: UFUNCTION() void CallbackBoundToSomeDelegate();};Delegate는 C++의 함수 포인터 개념..
#1. TUniquePtr 1. 개념TUniquePtr는 Unreal에서 제공하는 스마트 포인터 클래스 중 하나로 단일 소유권을 가진 스마트 포인터입니다. 2. 특징단일 소유권복사 불가, 이동 허용낮은 메모리 오버헤드 3. 코드TUniquePtr UniquePtr = MakeUnique();UniquePtr->DoSomething();// 소유권 이전TUniquePtr NewPtr = MoveTemp(UniquePtr);// 이제 UniquePtr은 nullptr이 되고, NewPtr이 객체를 소유합니다. #2. TSharedPtr 1. 개념TSharedPtr는 Unreal에서 제공하는 스마트 포인터 클래스 중 하나로, 공유 소유권을 가진 포인터입니다. C++의 shared_ptr와 같이 레퍼런스 카..
#1. 생명 주기 함수 1. 개념Unreal Engine에서 생명 주기 함수는 객체의 생성부터 소멸까지 특정 시점에 자동으로 호출되는 함 들입니다. 특히, 이들은 초기화, 갱신, 정리 등 객체의 상태 관리에 중요한 역할을 합니다. 객체의 생명 주기를 크게 세 가지로 나눌 수 있습니다-(1) 초기화 단계, (2) 실행 단계, (3) 종료 단계. 아래 정리한 내용은 일반적인 상황의 경우이며, 특정 상황에 따라 약간의 변동이 존재합니다. #2. Game Instance 1. 생명 주기 함수Init() : 게임 인스턴스가 생성될 때 호출됩니다. 게임 전체에 걸친 초기화 작업에 사용됩니다.Subsystem::Initialize() : 각 Subsystem의 초기화 작업이 이루어집니다.OnStart() : 첫 번..
#1. 개념 1. UBlueprintAsyncActionBaseUBlueprintAsyncActionBase는 Unreal Engine에서 블루프린에서 사용할 수 있는 비동기 작업을 생성하기 위한 기본 클래스입니다. 먼저, UBlueprintAsyncActionBase는 메인 스레드를 차단하지 않고, 백그라운드에서 실행할 수 있도록 합니다. C++로 작성된 비동기 로직을 블루프린트로 가져 활용할 수 있으며, 특히 이벤트 기반 프로그래밍을 가능케 하여 작업 상황에 대한 이벤트 등을 활용할 수 있습니다. #2. 코드 1. AttributeChange [GroupProject_AOW]#1. Attribute 수치 변화 이벤트 관련 인터페이스#1. 목표 GAS 프레임워크에서 Ability System Com..