본문 바로가기

[Unreal4] Nested containers are not supported. 오류 해결하기.

Kwonriver 2022. 10. 27.
728x90

 

최신의 C++은 2차원 배열을 동적할당하여 사용하기 보다는 2개의 컨테이너를 사용해 2차원을 표한하기를 원한다.

예를들어 int ** Array 를 사용하는 것이 아닌 Vector<Vecotr<int>> Array를 사용하는 것이다. 

 

그렇게 언리얼 코드를 짜다보면 Nested containers are not supported. 에러를 만나게 된다.

 

이는 C++은 중첩된 컨테이너를 지원하지만 블루프린트는 지원하지 않기 때문이다.

실제로 공식 블루프린트 문서에 2차원 배열을 사용하는 것을 눈을 씻고 찾아봐도 없다.

이는 블루프린트 뿐 아니라 C++ 코드를 리플렉트할 때에도 마찬가지 에러가 발생한다.

 

UPROPERTY(VisibleAnywhere, Category = "Board")
TArray<TArray<ATile*>> TileMap;		// 에러 발생 코드

/* 단순히 값이 잘 들어가 있나 보려고만 해도 에러가 발생한다. */

 

따라서 중첩 컨테이너를 블루프린트에서 사용할 수 있는 공식적인 방법은 없다.

 


 

중첩 컨테이너를 사용하지 않은 채로 2차원을 구현하려면 귀찮고 생각할 게 많고 size단위로 잘 움직여야하기 때문에 불편함이 있다.

따라서 이를 해결하기 위한 방법으로 컨테이너 하나를 구조체로 감싸는 방법을 사용한다.

 

USTRUCT(BlueprintType)
struct FINDMINE_API FTileMapRow
{
	GENERATED_USTRUCT_BODY()

public:
	TArray<ATile*> Row;
};


...

	UPROPERTY(VisibleAnywhere, Category = "Board")
	TArray<FTileMapRow> TileMap;		// 에러 해결

...

 

728x90