2026-04-16(목)

조범근·2026년 4월 16일

TIL

목록 보기
45/83

C++ Week 8

Study

언리얼C++ 기초, 게임기획 과제, 알고리즘 1문제


Today I Learned


Unreal C++

bool

컴퓨터 최소 메모리 단위는 1바이트(비트)이다. 그렇지만 우리가 bool bIsDead;라고 쓰면, 컴퓨터는 죽었는지 살았는지 체크 한다. 문제는 이때 발생하는데, 단순히 1비트만 쓰는게 아니라 최소 단위인 1바이트(8칸)를 통째로 줘버린다. 그럼 나머지 7비트가 빈 공간으로 낭비된다.

여기서 언리얼은 1바이트(8칸)을 하나 빌려와서, 거기다가 bool변수 8개를 1비트씩 쪼개서 집어넣는다. 그래서 네트워크 전송이나 파일 저장에 사용





static FObjectFinder

왜 찾는 작업에 static을 붙이는지 궁금해졌음.

정답은 찾기(Finder) 작업이 너무 무겁기 때문에 static을 붙인다. 왜 static을 붙이냐면,ConstructorHelpers::FObjectFinder는 생성자에서만 사용할 수 있다. 그리고 생성자에서 생성하는 것은 경로가 변하지 않는 특성을 이용해서 static을 써서 검색 과정을 생략하는거다.
만약 static이 없으면 첫 번째 횃불을 만들때 에셋 폴더 뒤져서 찾아온다. 그럼 두번 째에는? 또 똑같이 전체에셋을 뒤져서 찾아온다. -> 게임 로딩이 느려진다.

static이 있으면 함수가 처음 실행될 때 딱 한번만 초기화되고, 이후에 메모리에 계속 남아있는다.





Class Event

GameMode

InitGame -> 게임 점수, 승리 조건 등 설정할때 사용
PostLogin -> 플레이어가 서버에 접속 성공했을 떄 실행된다. 접속하고 캐릭터를 만들어줄때 사용

PlayerController

SetupInputComponent -> 키보드/마우스 입력을 바인딩 하는 곳

OnPossess -> 캐릭터를 빙의(조종)하기 시작할때 실행. 여기서 HUD(UI)를 띄우는 작업을 많이함

Pawn/Charcter

PossessedBy -> 컨트롤러의 OnPossess와 세트 누군가에게 조종당하기 시작한걸 알 때 사용

SetupPlayerInputComponent -> 캐릭터만의 특수 조작(EX: 2단 점프)을 연결할 때 사용





Meta = (AllowPrivateAccess = "true")

변수를 private:구역에 선언하면, 객체지향 원칙상 외부(블루프린트 포함)에서는 이 변수를 건드릴 수 없다. 하지만 언리얼 에디터의 '상세창(Details)'에서 이 값을 조절하고 싶을 때가 있다. EditAnywhere를 쓰고 싶은데 변수가 private면 언리얼 헤더 툴(UHT)이 에러를 낸다.

이때 meta = (AllowPrivateAccess = "true")를 붙여주면 C++ 코드상으로는 private으로 보호하되, 블루프린트 에디터에서는 접근 할 수 있다.

0개의 댓글