목록2025/05 (21)
나만의 작은 도서관

주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] Actor, Pawn, Character, Controller언리얼에서 블루프린트 클래스를 새로 만들려고 하면 창 하나가 뜨는데, 창에 뜬 목록들을 보면 위와 같이 유니티에선 없었던 Actor, Pawn과 같은 애들이 있다. 오늘은 이 애들의 용도가 뭔지, 어떤 상황에서 사용하는지 알아보기로 했다.Actor, Pawn, Character는 상속 관계에 있는 클래스들이다.Actor, Pawn, Character 이 셋은 상속 관계로 묶여있는 애들이다. 즉, 이 셋 중에서 Actor가 가장 Base가 되는 클래스이며, Actor → Pawn → Character 순으로 상속 관계를 가진다.위 셋은 무엇을 위한 클래..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. github은 100MB 이상의 파일을 push 할 수 없다.기본적으로 git은 여러 개의 작은 소스 코드 파일들을 추적하기 위한 VCS(Version Control System)이므로, 과하게 큰 파일을 추적하는 것은 소스 코드가 아닐 가능성이 높다.위와 같은 이유에서인지 Github에서는 100MB 이상의 파일을 Push 할 수 없게 제한을 두고 있는데, 이 제한 때문에 자원(Resource)에 해당하는 파일들이 너무 크면 용량 제한에 걸려 못 올리는 경우가 생긴다.예시로, 언리얼 프로젝트에서 사용한 NPC, 몬스터의 에셋들은. uasset이라는 확장자 파일로 존재하게 되는데, 이러한 에셋들의 용량은 100MB를 넘어..

주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] 블루프린트 클래스 추가 시 만들어놓은 클래스가 ALL Class에 뜨지 않을 때 해결법블루프린트를 삭제한 후에도 해당 클래스 정보가 캐시에 남아있어서 새로운 블루프린트 생성 시 All Classes 목록에서 사라지는 현상이다.가장 간단한 해결 방법으로, 에디터를 재시작하면 된다고 한다. 하지만 불행하게도 에디터 재시작으론 해결되지 않았다. 그래서 아래 폴더들을 삭제해서 해결했다.[프로젝트폴더]/Binaries/[프로젝트폴더]/Intermediate/[프로젝트폴더]/DerivedDataCache/[프로젝트폴더]/Saved/(참고로 위 폴더 4개를 지우고 나면 비활성화 해두었던 언리얼 설정이 사라지기 때문에 재설정..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. shared_ptr은 thread-safe 한가?C++에서는 자원(동적 할당한 메모리)의 할당 및 해제를 알맞은 정책으로 관리하기 위해 포인터를 래핑 한 클래스, 즉, 스마트 포인터를 사용한다.스마트 포인터는 자원의 생명 주기를 관리해 주기 때문에 몇 가지 조심하기만 한다면(ex. 순환 참조 문제) 자원을 사용하는 데 있어 모든 게 해결된 것만 같다. 그렇다면 멀티 스레드 환경에서도 스마트 포인터는 안전할까?일부만 thread-safe 한 스마트 포인터스마트 포인터(이하 shared_ptr이라고 부름)는 자원을 가리키는 포인터와 refCount로 구성되어 있다(엄밀히 따지면 아니긴 하지만).스마트 포인터는 refCount..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 이미 git에서 추적되는 파일 제거하기나는 당연히 .gitignore에 적용한 타입의 파일은 이미 올라간 파일에도 적용될 줄 알았다. 하지만 .gitignore에 추적하지 않을 파일 타입을 추가해도 계속해서 git에 올라가는 것을 발견했고, 찾아보니 추적은 계속된다는 것이었다..gitignore의 특징.gitignore은 “새로 추가되려는 파일”에만 적용되며, Git이 이미 추적(tracked) 중인 파일은 해당 파일을 추가해도 무시되지 않는다.예를 들어, git으로 추적되는 디렉토리 A가 있고, X.dll 파일이 존재한다고 가정해 보자.이 상황에서 뒤늦게 .gitignore에 .dll 확장자 파일들을 추적하지 않기 위해..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. friend 연산자 멤버 함수 패턴 이해하기struct FPacketHeader { friend FArchive& operator위 코드는 패킷 헤더를 정의한 FPacketHeader 구조체 내부에 friend 연산자 멤버 함수를 정의한 코드이다. 이 함수를 통해 ar 연산자 오버로딩 함수friend FArchive& operator연산자 오버로딩 함수의 종류는 2가지로, 멤버 함수 타입과, 전역 함수 타입이 있다. 종류를 구분하는 방법이 조금 특이한데, 바로 매개변수 시그니처의 패턴을 고려한다는 것이다.위 연산자 함수는 “전역 함수” 타입이다.“// 만약 FPacketHeader의 멤버 연산자라면:class FPa..