상세 컨텐츠

본문 제목

[Unreal] 변수

개발기록/개발스터디

by 도리(Dory) 2024. 1. 31. 17:20

본문

// 일반 정수(short 2byte, int 4byte, long 4byte)
short s;
int i;
long l;

// 비트 수에 따라
int8 i8;
int16 i16;
int32 i32;
int64 i64;

// 양수만
uint8 ui8;
uint16 ui16;
uint32 ui32;
uint64 ui64;

// 실수 (float 4byte, double 8byte)
float f;
double d;

// 문자열

// 저장되는 문자열 길이에 따라 메모리 크기 자동 조절
// 텍스트 매크로 사용해야함.
FString fstr;

// 논리변수
bool b;

 

 

언리얼 에디터에서 변수값들을 수정하려면 다음과 같이 UPROPERTY() 라는 것을 사용해줘야한다.

 

MyActor.h

	// EditAnyWhere : 아키타입(아직 인스턴스화 되지않은 블루프린트 원본)과 인스턴스 프로퍼티 양쪽에서 모두 편집 가능
	// BlueprintReadWrite : 블루프린트에서 편집 가능
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
		int32 TotalDamage;
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
		float DamageTimeInSeconds;
	
	// BlueprintReadOnly : 블루프린트에서 읽기만 가능
	// VisibleAnywhere : 모든 프로퍼티 창에서 보이지만 편집은 불가능
	// Transient : 휘발성 프로퍼티로 저장되지 않음.
	UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category = "Damage")
		float DamagePerSecond;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		FString CharacterName;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		bool bAttackable;

 

언리얼 에디터에서의 결과창

 

 

 

 

초기값을 입력해주려면, MyActor.cpp 의 생성자 함수에서 처리해준다.

 

AMyActor::AMyActor() : TotalDamage(10), DamageTimeInSeconds(1.2f)
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	
	UE_LOG(LogTemp, Log, TEXT("Constructor"));

	DamagePerSecond = TotalDamage / DamageTimeInSeconds;
	CharacterName = TEXT("Nickname");
	bAttackable = true;
}

 

함수 이름 옆에 : 를 붙이고 값을 넣어주는 방법과

함수 안에서 직접 대입해주는 방법이 있다.

 

컴파일 결과 다음과 같이 초기값이 지정되었다.

 

 

 

(출처 : 베르의 게임개발 유튜브, https://youtu.be/VyYqyVe3vQI?si=nc8eLhiFG9dfwuJn)

관련글 더보기