
1. WHAT
알고리즘 코드카타
- 문자열 다루기 기본
#include <string>
#include <vector>
#include <cctype>
using namespace std;
bool solution(string s) {
bool answer = true;
if(!(s.size()==4 or s.size()==6))
return false;
for(char c:s){
if(!isdigit(c))
return false;
}
return answer;
}
- #include <cctype> : 문자의 종류 판단
- isalnum(c): 알파벳, 숫자 > true
- isalpha(c): 알파벳 > true
- isblank(c): space,tab > true
- isdigit(c): 숫자 (0~9) > true
- isxdigit(c): 16진수 (0~9, A~F) > true
- islower(c): 소문자 > true
- isupper(c): 대문자 > true
- isspace(c): 빈칸 > true
- ispunct(c): punctuation 쉼표(,) 마침표(.) 등의 문장기호 > true
- tolower(c): 소문자로 바꾸어주는 함수
- toupper(c): 대문자로 바꾸어주는 함수
C++와 Unreal Engine으로 3D 게임 개발 1-5~7
- Log 카테고리 설정
// .h
DECLARE_LOG_CATEGORY_EXTERN(LogSparta, Warning, All);
// 카테고리, 기본 출력 레벨, 컴파일 타임 출력 레벨
// .cpp
DEFINE_LOG_CATEGORY(LogSparta);
- Actor 라이프 사이클 함수
#include "Item.h"
DEFINE_LOG_CATEGORY(LogSparta);
// Sets default values
AItem::AItem()
{
// 루트 컴포넌트 지정 ( 주로 SceneComponent )
SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
SetRootComponent(SceneRoot);
// StaticMesh 컴포넌트 생성 및 루트에 부착
StaticMeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
StaticMeshComp->SetupAttachment(SceneRoot);
// StaticMesh와 Material 에셋 로드 및 설정
static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshAsset(TEXT("/Game/Resources/Props/SM_Potion_A.SM_Potion_A"));
if (MeshAsset.Succeeded())
{
StaticMeshComp->SetStaticMesh(MeshAsset.Object);
}
static ConstructorHelpers::FObjectFinder<UMaterial> MatAsset(TEXT("/Game/Resources/Materials/M_Coin_B.M_Coin_B"));
if (MatAsset.Succeeded())
{
StaticMeshComp->SetMaterial(0, MatAsset.Object);
}
UE_LOG(LogSparta, Warning, TEXT("%s Constructor"), *GetName());
}
void AItem::PostInitializeComponents()
{
Super::PostInitializeComponents();
UE_LOG(LogSparta, Warning, TEXT("%s PostInitializeComponents"), *GetName());
}
void AItem::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogSparta, Warning, TEXT("%s BeginPlay"), *GetName());
}
void AItem::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void AItem::Destroyed()
{
UE_LOG(LogSparta, Warning, TEXT("%s Destroyed"), *GetName());
Super::Destroyed();
}
void AItem::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
UE_LOG(LogSparta, Warning, TEXT("%s EndPlay"), *GetName());
Super::EndPlay(EndPlayReason);
}

- FTransform 자료형
void AItem::BeginPlay()
{
Super::BeginPlay();
SetActorLocation(FVector(300.0f, 200.0f, 100.0f));
SetActorRotation(FRotator(0.0f, 45.0f, 0.0f)); // pitch, yaw, roll // y, z, x 회전
SetActorScale3D(FVector(2.0f, 1.0f, 1.0f)); // 2.0f 만 넣으면 전체 크기 2배
FVector NewLoc(300.0f, 200.0f, 100.0f);
FRotator NewRot(0.0f, 45.0f, 0.0f);
FVector NewScal(2.0f, 1.0f, 1.0f);
FTransform NewTrans(NewRot, NewLoc, NewScal);
SetActorTransform(NewTrans);
}
- pitch, yaw, roll

- 리플렉션
언리얼 엔진의 리플렉션 시스템은 C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고,
이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술
- #include "Item.generated.h"
- 언리얼 엔진이 자동 생성하는 헤더 파일로, 클래스의 리플렉션 및 엔진 통합에 필요한 코드가 들어 있습니다.
- 반드시 헤더 파일의 가장 마지막 #include 구문 아래에 위치해야 합니다. (다른 #include보다 아래에 오지 않으면 빌드 에러 발생 위험이 있습니다.)
- UCLASS()
- 해당 클래스를 언리얼 엔진의 리플렉션 시스템에 등록한다는 의미입니다.
- 이 매크로가 있어야만 블루프린트 등 에디터 차원에서 이 클래스를 인식하고 사용할 수 있습니다.
- GENERATED_BODY()
- 언리얼의 코드 생성 도구가 사용하는 코드를 삽입하는 역할을 합니다.
- 클래스 내부에 필요한 리플렉션 정보를 자동으로 생성해 줍니다.
- UPROPERTY() 매크로의 주요 지정자
- UPROPERTY()에는 여러 지정자를 작성해, 에디터에서의 표시 여부나 Blueprint 접근성, 읽기/쓰기 권한 등을 자세하게 설정할 수 있습니다. 아래는 자주 쓰이는 대표적인 지정자들입니다.
- 편집 가능 범위 지정자
- VisibleAnywhere: 읽기 전용으로 표시되며, 수정은 불가능
- EditAnywhere: 클래스 기본값, 인스턴스 모두에서 수정 가능
- EditDefaultsOnly: 클래스 기본값에서만 수정 가능
- EditInstanceOnly: 인스턴스에서만 수정 가능
- Blueprint 접근성 지정자
- BlueprintReadWrite: Blueprint 그래프에서 Getter/Setter로 값을 읽거나 쓸 수 있습니다.
- BlueprintReadOnly: Blueprint 그래프에서 Getter 핀만 노출되어, 읽기만 가능합니다.
- Category 지정자
- Details 패널에서 이 변수는 “Rotation” 범주(폴더) 아래에 표시됩니다.
- 여러 변수를 비슷한 카테고리에 묶으면, 세부 정보 패널에서 깔끔하게 정리되어 보입니다.
- 메타 옵션 지정자
- meta=(ClampMin="0.0"): 에디터에서 변수 입력 시 최소값을 제한할 수 있습니다.
- meta=(AllowPrivateAccess="true"): 해당 멤버가 private로 선언되어 있어도, 에디터나 Blueprint에서 접근할 수 있도록 허용합니다.
- 만약 UPROPERTY()만 있고, 추가 지정자를 하나도 주지 않는다면?
- 엔진 리플렉션 시스템에는 등록되지만, 에디터나 Blueprint에 노출되지는 않습니다.
- “엔진이 변수의 존재는 알고 있지만, 외부에서는 보이지 않게 숨겨둔 상태”라고 볼 수 있습니다.
- 리플렉션에 등록만 되어 있어도 가비지 컬렉션(메모리 관리)과 직렬화(세이브/로드) 같은 엔진 내부 기능이 작동할 수 있습니다.
// Root Scene Component, 에디터에서 볼 수만 있고 수정 불가
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Item|Components")
USceneComponent* SceneRoot;
// Static Mesh, 에디터와 Blueprint에서 수정 가능
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Item|Components")
UStaticMeshComponent* StaticMeshComp;
// 회전 속도, 클래스 기본값만 수정 가능
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Item|Properties")
float RotationSpeed;
- UFUNCTION() 매크로의 주요 지정자
- Blueprint 관련 지정자
- BlueprintCallable
- Blueprint 이벤트 그래프(노드)에서 호출(Execute) 가능한 함수로 만듭니다.
- BlueprintPure
- Getter 역할만 수행합니다. (Exec 핀 없이 Return Value만 노출)
- BlueprintImplementableEvent
- 함수의 선언만 C++에 있고, 구현은 블루프린트에서 하도록 합니다. C++ 코드에서는 함수 이름만 정의하고, 실제 동작은 Blueprint Event Graph 안에서 이벤트 노드처럼 구현됩니다.
- BlueprintCallable
- 만약 UFUNCTION()에 지정자를 하나도 쓰지 않았다면?
- UPROPERTY()와 마찬가지로, 함수가 언리얼 리플렉션에 등록되긴 하지만, 특별히 Blueprint에 노출되지는 않습니다.
- “엔진이 함수의 존재는 파악하되, Blueprint에서 직접 호출할 수 없게 숨겨둔 상태”라고 보면 됩니다.
// 함수를 블루프린트에서 호출 가능하도록 설정
UFUNCTION(BlueprintCallable, Category="Item|Actions")
void ResetActorPosition();
// 블루프린트에서 값만 반환하도록 설정
UFUNCTION(BlueprintPure, Category = "Item|Properties")
float GetRotationSpeed() const;
// C++에서 호출되지만 구현은 블루프린트에서 수행
UFUNCTION(BlueprintImplementableEvent, Category = "Item|Event")
void OnItemPickedUp();

2. 참고
https://0-sunny.tistory.com/31
[C++ 기초] cctype 헤더파일
문자의 종류를 판단하는 함수를 제공 isalnum 알파벳이거나 10진수 해당하는 문자면 1 아니면 0 isalpha 알파벳이면 1 isblank space이거나 tab이면 1 isdigit 숫자(0~9)이면 1 isxdigit 16진수에 사용되는 숫자(0~9
0-sunny.tistory.com
Coordinate Systems for Unreal Engine Simulation in Robotics System Toolbox - MATLAB & Simulink
Understand the world and robot coordinate systems when simulating in the Unreal Engine environment.
kr.mathworks.com
https://blog.naver.com/ideugu/221411002215
23. 3D 좌표계 (3D coordinate system)
안녕하세요. 2018년 (무려 4년전.. )에 연재한 상상하는 게임 수학에 설명한 내용을 모아 책으로 발간했습...
blog.naver.com


'내배캠Unreal_TIL > UE' 카테고리의 다른 글
| [TIL] 2026-01-13 | State Machine 설계를 통한 캐릭터 애니메이션 적용 (0) | 2026.01.13 |
|---|---|
| [TIL] 2026-01-12 | UE C++ 캐릭터 컨트롤 (0) | 2026.01.12 |
| [TIL] 2026-01-08 | 언리얼 엔진 기본 구조, 빌드 문제 해결, Actor 클래스에 컴포넌트 추가 (0) | 2026.01.08 |
| [TIL] 2025-12-24 | 과제 5 구현, 레벨 테스트 후기 (1) | 2025.12.24 |
| [TIL] 2025-12-22 | UE와 VS 충돌 ? 해결 및 언리얼 C++ 시작하기 (0) | 2025.12.22 |