일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 티스토리 코드블록
- 가운뎃점 입력
- 쿠르츠 게작트
- 백준
- 스팀 돈얼마나 썼는지보기
- 자바스크립트 defer
- 도파 신경론
- 롤 현질금액보기
- 비주얼스튜디오 코드 폰트
- Class1
- c++
- 티스토리 전체글수표시
- 앤드류 테이트
- 티스토리사진
- 스팀 사용 금액
- 스팀에 돈 얼마나 썼지
- 비주얼스튜디오 코드 글꼴
- 롤 현질얼마나 했는지보기
- 게임 네트워킹
- 어도비플래시서비스종료
- 한글 가운뎃점
- 자바메모
- 도선생님 신경론
- 신경론
- 명언
- 언리얼
- 티스토리사진한줄에 여러개
- 어도비플래시삭제
- 티스토리전체글수
- 롤에 돈얼마나썼지
- Today
- Total
Small Step
[언리얼,C++] 언리얼 C++ 공부 정리(베르 - 1.변수, UPROPERTY) 본문
변수, UPROPERTY
멤버 변수를 만들기 위해서는 클래스의 헤더 파일에서 선언해줘야 한다.
언리얼에서 변수를 쓰기 위해서는 UPROPERTY() 매크로를 사용해야 한다.
자료형 정리
정수
길이가 고정되어 있는 int8, int16, int32, int64 가 있다.
정수를 표현할 때 몇 비트를 쓸 지에 따라 숫자로 나타낸다.
C++에서 unsigned를 쓰듯이 변수 앞에 u를 붙여 양수 표현에만 쓸 수 있다.
uint8, uint16, uint32, uint64
실수
C++과 같이 float과 double이 있으며 각각 32비트, 64비트이다.
float은 소수점 5자리까지 정밀도를 double은 10자리까지 정밀도를 가짐.
문자열
언리얼 C++에서는 기본적으로 FString을 이용한다.
따옴표(" ")를 이용해서 넣는 것이 아닌 TEXT( )매크로를 이용해야 한다.
FString fstr = TEXT("text");
논리 변수
bool을 이용해줌.
전 시간 클래스를 다시 이용해서 예제 작성.
변수(함수)의 공개 범위
public : 클래스 외부의 모두에게 공개
protected : 클래스를 상속받은 자식 클래스에게만 공개
private : 외부 공개 X 클래스 내부에서만 이용
public로 설정해도 언리얼 에디터의 디테일 패널에서 공개되지는 않음.
변수 에디터에서 표시하기
이를 위해서는 UPROPERTY매크로를 이용
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
int32 TotalDamage;
EditAnywhere : 아키타입(archytype)과 레벨에 배치된 인스턴스 양 쪽 모두의 프로퍼티 창에서 편집 가능.
아키타입 : 인스턴스화 되지 않은 블루프린트의 원본
BlueprintReadWrite : 블루프린트에서 읽기 쓰기 모두 가능.
Category : 블루프린트 편지 툴이나 디테일 패널에서 카테고리로 묶음.
BlueprintReadOnly : 프로퍼티를 블루프린트에서 읽기만 가능.
VisibleAnywhere : 모든 프로퍼티 창에서 보이지만 편집X
Transient : 해당 프로퍼티가 휘발성으로 프로퍼티로 저장되지X
엑터를 배치하고 선택한 후 왼쪽 아래 디테일 패널을 보면 변수를 확인 가능하다.
변수의 값 설정
소스파일(cpp파일)로 가서 설정해준다.
생성자 옆에 콜론을 입력해 프로퍼티(값) 이런 식으로 설정하거나
생성자의 바디에서 일반적인 변수처럼 설정해주는 것이다.
//MyActor01.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor01.generated.h"
UCLASS()
class BERL02_API AMyActor01 : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor01();
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
int32 TotalDamage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
float DamageTimeInSeconds;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category = "Damage")
float DamagePerSecond;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FString CharacterName;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bAttackable;
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};
//MyActor01.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyActor01.h"
// Sets default values
AMyActor01::AMyActor01() : 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;
}
// Called when the game starts or when spawned
void AMyActor01::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Log, TEXT("BeginPlay"));
}
// Called every frame
void AMyActor01::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
//UE_LOG(LogTemp, Log, TEXT("Tick"));
}
디테일 패널에서 설정한 변수의 값들을 확인 가능.
'언리얼' 카테고리의 다른 글
[언리얼, 블루프린트] 공부 정리 - [공식 튜토리얼] 블루프린트 핵심 개념 (0) | 2022.08.08 |
---|---|
[언리얼, 머티리얼] 공부 정리 - [공식 튜토리얼] 머티리얼 핵심 개념 (0) | 2022.08.08 |
[언리얼,C++] 언리얼 C++ 공부 정리(베르 - 함수, 블루프린트, 입력) (0) | 2022.08.06 |
[언리얼,C++] 언리얼 C++ 공부 정리(베르 - 함수) (0) | 2022.08.06 |
[언리얼,C++] 언리얼 C++ 프로그래밍 입문(베르 유튜브 0) (0) | 2022.08.05 |