hljs.initHighlightingOnLoad();

언리얼

Unreal

TSubclassOf vs TSoftClassPtr

TSubclassOf란?언리얼 엔진에서 특정 클래스의 서브 클래스를 안전하게 참조할 수 있도록 도와주는 템플릿 클래스이다.언리얼 엔진에서 UObject 또는 AActor 기반 클래스를 다룰 때, 특정 클래스의 하위 클래스(서브 클래스)만을 저장할 수 있는 변수를 만들 때 사용된다.하드 레퍼런스클래스가 항상 메모리에 로드된 상태에서 바로 접근한다. 왜 필요한가?일반적인 UClass* 포인터를 사용하면 모든 UObject 타입을 받을 수 있어 타입 안전성이 떨어진다.TSubclassOf는 UClass*로 변환될 수 있어, 언리얼 엔진의 클래스 시스템과 자연스럽게 통합된다. 사용법TSubclassOf ActorClass; ActorClass 변수에는 AActor를 상속한 클래스만 저장 가능 TSoftClass..

Unreal

액션 바인딩 추가 및 캐릭터 동작 구현

1. 캐릭터 클래스에서 입력 액션 연결의 개념PlayerController는 키나 마우스 입력을 감지하고, 각 IA를 활성화해 줄 뿐이다.그 다음 캐릭터 클래스에서 "어떤 함수가 호출될지"를 바인딩해 주어야 최종적으로 동작이 이루어진다.PlayerController는 IMC를 활성화한다.해당 IMC에는 UInputAction들이 키보드/마우스와 맵핑되어 있다.캐릭터는 SetupPlayerInputComponent() 함수를 통해 "각 액션이 발생했을 때 어떤 함수를 실행할지"를 등록한다.이렇게 등록한 함수들이, 실제로 움직이거나 점프하는 등 캐릭터 동작을 수행한다.2. 캐릭터에 액션 바인딩 추가하기Character.h FInputActionValue를 전방 선언한다.  IA_Move와 IA_Jump 등을..

Unreal

Enhanced Input System의 이해 및 Input Action 설정하기

1. Enhanced Input System이란?UE5에서는 이전 버전에서 사용하던 전역 Project Settings -> Input 시스템을 대체하거나 확장하기 위해 Enhanced Input 시스템이 제공된다.Enhanced Input은 입력 설정을 IMC(Input Mapping Context)와 IA(Input Action)이라는 개념으로 나누어 관리한다.2. Input Action (IA)2-1. 개념Input Action은 캐릭터의 이동, 점프, 발사, 줌 등과 같이 특정 동작을 추상화한 단위이다.예를 들어 WASD 이동을 담당하는 IA_Move, 스페이스바 점프를 담당하는 IA_Jump, 마우스 회전을 담당하는 IA_Look 등을 만들 수 있다.2-2. 생성 방법 Content Browse..

Unreal

Player Controller

1. PlayerController란?PlayerController는 사용자가 키보드, 마우스, 게임 패드 등에서 입력을 받으면, 그 입력을 해석하여 캐릭터나 다른 오브젝트에게 동작을 명령하는 핵심 클래스이다.특히 멀티플레이 환경에서는, 각 플레이어마다 개별 PlayerController가 생성되므로, 여러 사용자의 입력을 충돌 없이 분리하고 관리할 수 있다.언리얼 엔진의 중요한 철학 중 하나는 "플레이어 입력은 PlayerController에서 처리한다."이다.이를 통해 입력 처리 로직과 실제 캐릭터의 동작 로직을 분리할 수 있어, 코드를 구조적으로 관리하기가 훨씬 수월해진다. 1-1. 입력이 처리되는 기본 흐름키보드, 마우스, 게임 패드 등 입력 장치로부터 사용자 조작 신호가 들어온다.이 신호는 Pl..

Unreal

[7강 숙제] 멤버 변수 및 멤버 함수 리플렉션 시스템 사용하기

6강 숙제에 리플렉션 시스템을 활용해 보았다. 코드(Test1.h)#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Test1.generated.h"UCLASS()class PROJECTJS_API ATest1 : public AActor{ GENERATED_BODY() public: ATest1();protected: UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Test1|Components") USceneComponent* SceneRoot; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Test1|..

Unreal

언리얼 엔진 리플렉션

1. 리플렉션 시스템 이해하기1 - 1. Blueprint(시각적 스크립팅) 이해Blueprint는 언리얼 엔진에서 제공하는 시각적 스크립팅 도구로, 노드(블록)을 연결하여 게임 로직을 작성한다.장점Blueprint 그래프를 수정 후, 에디터에서 Play 버튼을 누르면 곧바로 결과를 확인할 수 있다.아이디어를 빠르게 검증하고 반복할 때 큰 장점이 된다.레고 블록을 쌓듯이 노드를 연결해 로직을 작성하므로, 프로그래밍 언어에 익숙하지 않은 초급자들도 쉽게 접근할 수 있다.한계점노드 수가 많아질수록 그래프가 복잡해져, 가독성과 유지보수가 어려워질 수 있다.C++과 비교했을 때, Blueprint는 내부적으로 추가 해석 과정을 거친다. 따라서 물리 연산이나 AI 같이 높은 성능이 필요한 시스템에서는 병목이 될 ..

Unreal

[6강 숙제] 위치/회전/스케일을 동적으로 변경하는 오브젝트 만들기

새로운 C++ 클래스를 만든다.BeginPlay()에서 액터의 트랜스폼을 임의로 설정한다.Tick()에서 매 프레임마다 트랜스폼을 동적으로 변경한다.특히 Scale이 일정 시간마다 커졌다가 작아지는 효과를 구현한다.이때, DeltaTime을 곱해 프레임에 독립적인 움직임을 구현한다.코드test1.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Test1.generated.h"UCLASS()class PROJECTJS_API ATest1 : public AActor{ GENERATED_BODY() public: ATest1();protected: USceneComponent* SceneRoot; UStaticMe..

Unreal

언리얼 엔진 Actor의 라이프 사이클

언리얼 엔진에서 Actor는 게임 도중에 언제든지 생성(Spawn)될 수 있고, 필요 없어지면 파괴(Destroy)될 수 있다. 이를 Actor 라이프 사이클이라 부르며, 이 과정을 이해하면 게임 로직을 보다 효율적이고 안정적으로 작성할 수 있다. 1. 액터 라이프 사이클을 알아야 하는 이유1. 초기화 시점 결정생성자(Constructor), PostInitailizeComponents, BeginPlay 등이 각각 언제 호출되는지 알아야 적절한 곳에 코드를 배치할 수 있다.예) 컴포넌트 생성(CreateDefaultSubobject)은 생성자에서, 다른 액터 참조나 월드 접근은 BeginPlay에서 처리. 2. 성능 관리매 프레임마다 호출되는 Tick 함수는 비용이 클 수 있다.따라서 필요한 액터만 T..

(ꐦ •᷄ࡇ•᷅)
'언리얼' 태그의 글 목록