목록Unreal스터디 (36)
그냥 게임개발자
반복 처리 배열의 엘리먼트에 대한 반복처리(Iterate)를 하는 방법은 여러가지가 있으나, C++의 Range for 기능을 사용하는 것을 추천 FString JoinedStr; for (auto& Str : StrArr) { JoinedStr += Str; JoinedStr += TEXT(" "); } // JoinedStr == "Hello Brave World of Tomorrow ! " 물론 일반 인덱스 기반 반복처리 역시 가능 for (int32 Index = 0; Index != StrArr.Num(); ++Index) { JoinedStr += StrArr[Index]; JoinedStr += TEXT(" "); } 마지막으로 배열에는 반복처리에 대한 보다 세밀한 제어가 가능하도록 별도의 ..
SetNum 언리얼 컨테이너 라이브러리 같은 경우에는 컨테이너가 가지고 있는 요소의 수 같은 것들을 가져올 때 Count를 쓰지 않고 SetNum함수를 사용 StrArr.SetNum(8); // StrArr == ["Hello","Brave","World","of","Tomorrow","!","",""] SetNum의 번호가 현재 배열 번호보다 작은 경우 엘리먼트를 제거하기도 함. StrArr.SetNum(6); // StrArr == ["Hello","Brave","World","of","Tomorrow","!"]
Insert Insert는 Add, Emplace, Append 처럼 단일 엘리먼트나 엘리먼트 배열 사본을 주어진 인덱스에 추가시킨다. 다만 메모리 구조가 바뀌기 때문에 비용이 좀 발생한다. StrArr.Insert(TEXT("Brave"), 1); // StrArr == ["Hello","Brave","World","of","Tomorrow","!"]
Insert Insert는 Add, Emplace, Append 처럼 단일 엘리먼트나 엘리먼트 배열 사본을 주어진 인덱스에 추가시킨다. 다만 메모리 구조가 바뀌기 때문에 비용이 좀 발생한다. StrArr.Insert(TEXT("Brave"), 1); // StrArr == ["Hello","Brave","World","of","Tomorrow","!"]
AddUnique 기존 컨테이너에 동일한 엘리먼트가 이미 존재하지 않는 경우 새 엘리먼트만 추가한다. 존재 여부는 엘리먼트 유형의 operator== 를 사용해서 검사한다. 검사를 하는 것은 사실 Set이 더 유용하기 때문에 사실상 효과적이지 않다. StrArr.AddUnique(TEXT("!")); // StrArr == ["Hello", "World", "of", "Tomorrow", "!"] StrArr.AddUnique(TEXT("!")); // StrArr is unchanged as "!" is already an element
Append 다른 TArray 또는 일반 C배열로의 포인터 및 해당 배열의 크기에 다수의 엘리먼트를 한꺼번에 추가한다. FString Arr[] = { TEXT("of"), TEXT("Tomorrow") }; StrArr.Append(Arr, ARRAY_COUNT(Arr)); // StrArr == ["Hello", "World", "of", "Tomorrow"];
TArray(동적배열) 언리얼 엔진의 가장 간단한 컨테이너 클래스이다. 동일한 Type을 가져야 함. 시퀀스 즉, 연결되어 있으므로 엘리먼트는 잘 정의된 순서를 갖으며 같은 유형을 가지기 때문에 몇 번째 요소를 가지고 올 때 바로 해당 주소를 가져올 수 있다. 가장 자주쓰이는 컨테이너 클래스 신속성, 메모리 효율성, 안전성을 염두에 두고 디자인 되었다. 두 가지 프로퍼티로 정의된다. '엘리먼트 유형', '부로 얼로케이터(allocator)' '엘리먼트 유형'은 배열에 저장되는 오브젝트 유형이며 동질성 컨테이너 즉, 같은 사이즈를 가진다. 전부 엄격히 같은 유형으로 지정해야 한다. 유형이 다른 엘리먼트를 하나의 TArray에 저장할 수 없다. 얼로케이터(allocator)

언리얼 엔진이 자체적으로 제작해 제공하는 자료구조 라이브러리 줄여서 UCL(Unreal Container Libaray)라고도 한다. C++ STL과 언리얼 컨테이너 라이브러리의 차이점 C++ STL은 범용적으로 설계되어 있고, 표준이기 때문에 호환성이 높다. 또한 많은 기능이 엮여 있어 include 하게 되면 컴파일 시간이 오래 걸린다. 하지만 언리얼 컨테이너 라이브러리는 가볍고 게임 제작에 최적화 되어 있고, 언리얼 오브젝트 구조를 안정적으로 지원한다. 주요 컨테이너 라이브러리는 3개로 간결할 수 있다. C++과 언리얼 컨테이너 라이브러리 두 라이브러리의 이름과 용도는 유사하지만, 내부적으로는 다르게 구현이 되어 있다. C++ Unreal vector TArray set TSet map TMap T..