언리얼 표준
원 문법/형식자를 알더라도 언리얼이 제공하는 표준을 사용하는 이유?
그것이 '표준'이기 때문에.
표준에 맞게 사용하는 것은 매우 중요하다.
결국 모든 것은 '협업'그리고 '유지보수'가 중심이 되기 때문이다.
언리얼을 사용할 때는 언리얼 표준에 맞게 작성해야 원활한 유지보수가 가능하다.
핫리로딩_헤더파일 수정을 라이브코딩으로
cpp 파일이 수정되면, Ctrl+Alt+F11로 라이브코딩이 가능하지만,
header 파일이 수정되면, dll을 변경한 것이기 때문에 엔진을 다시 시작해야 한다.
Reflection 시스템
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/reflection-system-in-unreal-engine
class를 매크로로 캡슐화하여 언리얼 에디터/함수 기능을 사용하게 하는 기능이다.
언리얼의 리플렉션 시스템을 사용하기 위하여 언리얼이 인식할 수 있게 함수/프로퍼티를 선언하여 사용.
UFUNCTION()
UPROPERTY()
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Person.generated.h" // 리플렉션 매크로.
/**
*
*/
UCLASS() // 언리얼 클래스.
class OBJECTREFLECTION_API UPerson : public UObject
{
GENERATED_BODY()
public:
UPerson();
UFUNCTION() // 언리얼 함수 매크로.
virtual void DoLesson();
// Getter/Setter.
const FString& GetName() const;
void SetName(const FString& InName);
protected:
UPROPERTY() // 언리얼 프로퍼티 매크로.
FString Name;
UPROPERTY()
int32 Year;
};
CDO (Class Default Object)
CDO는 엔진 초기화 시 정리하기 때문에,
엔진 실행 중 변경하게 되면 적용되지 않는다.
CDO 정보를 변경하게 되면, 엔진을 다시 시작해야 적용된다.
CDO Name을 변경후, 실행하여도 바뀌지 않는 모습을 볼 수 있다.
이는 게임 개발 중 안전하게 사용할 수 있다는 의미도 있다.
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/objects-in-unreal-engine
리플렉션을 게임 플레이 중에 쓰지는 않음. 느림.
보통 엔진 수정에서 쓰임.
FName
언리얼에서 사용하는 네임 FName은 string이지만,
실질적으로는 데이터테이블에 한번 저장되고, 그 해시테이블을 사용하여 hash key값으로 관리하기 때문에 빠르다.
언리얼 공식 문서에 따르면, 초경량 시스템이라고 한다.
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fname-in-unreal-engine
Unity에서도 name값으로 Find...byName과 같은 기능이 있는데, 언리얼처럼 FName과 같이 관리되는 것인가?
프로젝트의 복사
기존 프로젝트에서 소스파일을 Source폴더에 붙여넣은 후, 엔진-Tools-Refresh후,
헤더파일에서 dll 매크로 이름을 새 프로젝트 이름_API로 수정해 준다.
UE5의 low pointer 사용
TObjectPtr로 감싸 사용한다.
UPROPERTY()
TObjectPtr<class UCourseInfo> CourseInfo;
'UnrealEngine5 > 공부' 카테고리의 다른 글
[UE5] Dedicated server 전용 서버 독학하기 1) 공식 문서 튜토리얼 (0) | 2025.04.09 |
---|---|
[UE5] !!반환을 하는 이유 (0) | 2025.04.09 |
[UE5] UStruct와 UMap, Algo::Transform (0) | 2025.04.04 |
[UE5] Unreal Container_TArray와 TSet (0) | 2025.04.03 |
[UE5] C++과 Unreal의 Delegate (0) | 2025.04.03 |