목록분류 전체보기 (451)
나만의 작은 도서관
나는 vector가 있는데 왜 불편한 C 배열을 쓰고 싶어 할까?vector라는 좋은 게 있는데 왜 C 배열을 쓰고 싶어지는 이유는 크게 두 가지 정도 있는 것 같다.첫 번째는 C 배열이 vector보다 가독성이 높다는 점이다. 개인적으로 vector와 같이 적는 것보단 int arr[5]와 같이 적는 게 훨씬 눈에 잘 들어왔다. 그래서 vector >와 같이 꺾쇠 지옥에 시달리다 보면 int arr[5][5]와 같은 문법이 그리워지곤 한다.두 번째는 고정된 크기임을 명시하고 싶을 때이다. vector는 기본적으로 크기 조절을 막을 수 있는 방법이 없다. 그래서 고정된 크기로 쓸 vector는 계속 머릿속으로 ‘이 vector는 고정 크기다’라는 생각을 하고 있어야 되는데 이게 너무 귀찮았다. 물론 st..
std::copy란?template OutputIt copy(InputIt first, InputIt last, OutputIt d_first);std::copy란 지정한 범위의 메모리를 복사하여 다른 위치에 붙여 넣는 함수로, 3개의 iterator를 인자로 받으며 [first, last) 범위의 메모리를 복사하여 d_first부터 붙여 넣는다.다른 STL Algorithm 함수들과 동일하게 last 위치는 범위에 포함시키지 않기 때문에 std::copy의 last 위치의 메모리가 복사 범위에 들어가지 않음을 유의해야 한다.std::copy를 사용할 수 있는 범위가 굉장히 넓지만, 제목에서 알 수 있듯 자주 사용되는 상황은 vector 부분 복사이다. 예제는 아래와 같다.vector v1 = {1, 2..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] 다시 정리하는 액터의 Life Cycle 액터의 생명 주기(Life Cycle)이란?레벨에 Actor가 생성, 초기화, 플레이, 소멸되는 전체과정각 단계마다 특정 이벤트 함수들이 자동으로 호출된다.각 이벤트 함수들이 어느 시점에 호출되는지 이해하면 적절한 시점에 로직을 채워 넣을 수 있음 액터 생성 단계 Construction Script액터가 처음 생성될 때 실행.에디터에서 액터의 속성(Property)을 수정할 때마다 호출되므로, 이곳에 게임플레이 로직을 작성하거나, 무거운 작업을 추가하면 안 된다.여기서 액터의 속성은 에디터에서 액터의 디테일 패널에 노출되는 값들이 대표적이다. 따라서, 액터를 레벨에 배치..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] BeginPlay()에 대해서… BeginPlay() 함수란?BeginPlay는 액터(AActor)가 월드(UWorld)에서 처음으로 활성화되고 시뮬레이션되기 시작할 때 단 한 번 호출되는 이벤트 함수이다. BeginPlay()가 호출되는 정확한 시점?하나의 액터를 두고 BeginPlay가 호출되는 시점을 정확하게 표현하자면 아래와 같다.액터의 모든 초기화 작업이 완료되었으며(부착된 컴포넌트 포함), 월드에 해당 액터가 등록되어 인지할 수 있는 시점. 레벨에 배치된 액터의 BeginPlay(), 게임 도중에 스폰된 액터의 BeginPlay()언리얼에서 이 둘의 BeginPlay() 호출 시점은 조금 다르다..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] LoadMap 안에서 일어나는 과정을 알아보자 ===LoadMap전 엔진 초기화 과정(처음 켰을때 한 번만 진행)=== 1. GEngine::Start엔진을 시작{ SCOPED_BOOT_TIMING("GEngine->Start()"); GEngine->Start();} 2. GEngine::Init()GameInstance, GameViewportClient, LocalPlayer를 생성 및 초기화 LoadMap을 기점으로 생성되는 객체LoadMap 이후에 생성되는 모든 객체는 UWorld에 종속되며, 레벨 전환 시 UWorld가 파괴되기 때문에 이에 종속된 객체들도 전부 파괴된다. 따라서, 위 사진에서 UEn..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] GameMode와 내부 Property들의 역할 시작하기 앞서…GameMode와 내부에 존재하는 Property들은 언리얼 네트워크 시스템을 밀접한 관련이 있다. 즉, 서버가 따로 없는 싱글플레이어 게임인 경우 GameMode 대부분의 기능이 사용되지 않으므로, 아래의 설명들은 멀티플레이어 게임을 기준으로 설명한다. 게임 모드(GameMode)란?게임의 규칙을 결정하고 정보를 처리하는 액터(Actor).서버 전용 클래스이며, 클라이언트에는 존재하지 않는다.언리얼에서 제공하는 게임 모드 클래스는 AGameModeBase와 AGameMode가 있으며, 현재 시점(UE5.3)에서 아래와 같은 역할을 한다.AGame..