1. 헬로 언리얼!

TechN0·2025년 2월 6일

언리얼 코드 컴파일 방법

  • 헤더 파일 변경 발생시 - 에디터 종료 후 VS에서 컴파일
  • 소스파일만 변경 발생시 - 라이브 코딩으로 컴파일(Crtl + Alt + F11)
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Engine/GameInstance.h"
#include "MyGameInstance.generated.h"

/**
 * 
 */
UCLASS()
class HELLOU_API UMyGameInstance : public UGameInstance
{
	GENERATED_BODY()
public:
	virtual void Init() override;
};
  • public: 은 왜 들여쓰기를 안하지?

    • 가독성을 위해 클래스 구조를 한 눈에 파악하기 쉽게
    • 복잡한 상속 관계에서 접근 지정자의 위치를 명확히 하기 위해
    • 언리얼 매크로(UCLASS()GENERATED_BODY 등)와의 일관성 유지
  • virtual은 뭐야?

    • 가상 함수(virtual function)를 나타내는 키워드
    • 이 함수가 파생 클래스에서 재정의될 수 있음을 명시
    • (C++11 이후) override 키워드와 함께 사용하는 것이 권장됨 (예: virtual void Init() override)
  • GENERATED_BODY() 는 또 뭐고?

    • 언리얼의 리플렉션 시스템을 활성화하는 필수 매크로
    • 클래스/구조체에 UPROPERTY, UFUNCTION 등을 사용할 수 있게 함
    • 헤더 파일에 반드시 포함되어야 하며, .h와 .generated.h의 연결을 담당
  • 오버라이드(Override)

    • 부모 클래스의 가상 함수를 자식 클래스에서 재정의하는 것
    • override 키워드를 붙이면 컴파일러가 함수 시그니처 검사를 강화해 줌 (잘못된 오버라이드 시 컴파일 에러 발생)
// Fill out your copyright notice in the Description page of Project Settings.

#include "MyGameInstance.h"

void UMyGameInstance::Init()
{
	Super::Init(); //Super 부모클래스

	UE_LOG(LogTemp, Log, TEXT("%s"), TEXT("Hello")); //문자열 다룰때는 언리얼 포멧인 TEXT("")를 사용할 것
}
  • void UMyGameInstance::Init()

    • Init() 함수는 UGameInstance의 초기화 과정에서 호출
  • Super::Init();를 호출하여 부모 클래스(UGameInstance)의 Init()실행

  • UE_LOG(LogTemp, Log, TEXT("%s"), TEXT("Hello Unreal!"));

    • LogTemp: 임시 로그 카테고리 (필요하면 별도로 로그 카테고리를 정의할 수 있음)
    • Log: 로그의 심각도 수준(Log, Warning, Error 중 선택 가능)
    • TEXT(""): 언리얼 엔진에서 문자열을 다룰 때 사용하는 포멧 또는 매크로(멀티바이트 지원)

0개의 댓글