FRotator와 FQuat
·
내배캠/Unreal Engine
언리얼 엔진에서 FRotator와 FQuat은 모두 회전을 표현하는 구조체이다.하지만 차이점이 존재하고 각자 장단점과 사용목적이 다르다.  FRotator와 FQuat의 차이점 FRotator구성요소:Pitch(y축), Yaw(z축), Roll(x축)형태:오일러 각(Euler Angles)로 회전을 표현장점: 직관적: 사람이 이해하기 쉽고, 에디터 UI와 직결되어있다.특정 축을 기준으로 회전을 조정하거나 디버깅할 때 유용하다.단점:Gimbal Lock 문제: 특히 90도 회전 근처에서 두 축이 겹쳐져 특정 회전 값에서 하나의 자유도를 잃는 문제 발생y축으로 90도 회전하였을 경우, 우측과 같이 x축과 z축이 겹치게 된다.이로 인해 3축 회전이 아니라 2축 회전만 가능하게 되고, 결과적으로 회전을 정확하게..
액터의 라이프 사이클
·
내배캠/Unreal Engine
// 메모리에 생성될 때, 단 한 번 호출// 월드에 스폰된 상태가 아니므로 다른 액터, 월드와 상호 작용X// 컴포넌트 생성 및 기본 변수 초기화에 사용constructor() // 액터의 모든 컴포넌트 생성 및 초기화 직후 자동으로 호출// 월드에 액터가 스폰되기 전, 컴포넌트끼리 데이터 상호작용에 사용PostInitializeComponents()// 게임 시작이나 월드에 액터가 스폰될 때 호출// 월드와 다른 액터들도 준비된 상태이므로 자유롭게 상호작용 가능// AI, 게임모드, 플레이어 컨트롤러 등 다른 시스템과의 연동 처리하기 적합BeginPlay()// 매 프레임마다 호출// 실시간 업데이트가 필요한 로직에 적합하지만 성능 저하 고려Tick(float DeltaTime)// 삭제 되기 직전에..
로그 카테고리 사용자 정의
·
내배캠/Unreal Engine
#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Item.generated.h"// 로그 카테고리 선언DECLARE_LOG_CATEGORY_EXTERN(LogItem, Warning, All);UCLASS()class STRIKEZONE_API AItem : public AActor{ GENERATED_BODY() public: AItem();protected: USceneComponent* SceneRoot; UStaticMeshComponent* StaticMeshComp; virtual void BeginPlay() override;};DECLARE_LOG_CATEGORY_EXTERN : 헤더 파일에서 로그..
25.01.20 (월)
·
내배캠/TIL
https://dong-grae.tistory.com/111 빌드 문제 복구하기간혹 C++ 코드 수정이 언리얼 에디터에 반영이 안될 때가 있다. 빌드가 꼬였다고도 표현하는 이 상황은 빌드 캐시나 프로젝트 설정 문제, 파일 경로가 꼬여서 발생할 수 있으며 아래와 같은 형태dong-grae.tistory.com 간혹가다 C++에서 코드 수정한 내용이 언리얼 에디터에 반영이 안되거나, UBT(Unreal Build Tool)과 관련한 에러가 발생하는 일이 있었는데, 오늘 강의에서 빌드가 꼬였을 때 해결 방안이 나와 정리하였다.     https://dong-grae.tistory.com/112 정적 초기화와 런타임 로드정적 초기화리소스를 클래스 생성자나 에디터에서 미리 로드하여 메모리에 할당하는 방식사용 상황..
디자인 패턴(Factory Pattern)
·
내배캠/C++
Factory Pattern객체 생성 로직을 클라이언트 코드로부터 분리시켜 캡슐화 하는 데 초점을 맞춘 디자인 패턴이다.클라이언트는 생성 과정의 세부 사항을 몰라도 팩토리 메서드를 통해 객체를 생성할 수 있게 한다. 텍스트 RPG를 만드는 과정 중에 Enemy 객체를 생성하는 로직을 전투를 관리하는 BattleManager 클래스로부터 분리하고자 이 팩토리 패턴을 사용하였다. // 인터페이스class IMonsterFactory{public: virtual ~IMonsterFactory() = default; virtual unique_ptr CreateMonster(const int& PlayerLevel) const = 0;};// 고블린 팩토리class GoblinFactory : pub..
정적 초기화와 런타임 로드
·
내배캠/Unreal Engine
정적 초기화리소스를 클래스 생성자나 에디터에서 미리 로드하여 메모리에 할당하는 방식사용 상황:항상 사용해야 하는 리소스일 경우: 메쉬, 기본 HUD, 게임 필수 UI 등.리소스가 가볍고, 메모리 사용이 문제가 되지 않을 때.게임 초기에 빠르게 준비해야 할 때: 리소스 로드로 인한 지연시 시간을 줄일 수 있다.장점:오류가 사전에 발견될 가능성이 높다(컴파일 타임에 경로 오류 등 확인)예측 가능한 로드 시간(정해진 시점에서 로드)단점:사용하지 않는 리소스도 미리 메모리에 로드되어 비효율적일 수 있다.초기 로딩 시간이 길어질 수 있음.     ConstructorHelpers  언리얼 엔진의 C++ 코드에서 리소스(에셋)를 로드할 때, 사용되는 클래스이다. 언리얼의 특정 에셋을 찾고 초기화하는 데 도움을 주는..