[언리얼 엔진] TTuple

    Unreal Engine TTuple

    개요

    언리얼 엔진에서 TTuple을 사용하려 하는데 공식 가이드 문서도 없고(API 페이지만 있음) 마땅한 참고 예제가 없어 정리하고자 한다. Tuple은 2개이상의 값을 하나의 변수에 담기 위해 사용된다.

    예제

        // 선언과 초기화
        TTuple<int32, FString> TupleTest(1, TEXT("Test"));
        TTuple<int32, FString> TupleTest2 = MakeTuple(2, TEXT("Test2"));
    
        //값 대입
        TTuple<int32, FString> TupleTest3;
        TupleTest3.Key = 3;
        TupleTest3.Value = TEXT("Test3");
    
        TTuple<int32, FString> TupleTest4;
        TupleTest4.Get<0>() = 4;
        TupleTest4.Get<1>() = TEXT("Test4");
    
        TTuple<int32, FString, float> TupleTest5;
        TupleTest5.Get<0>() = 5;
        TupleTest5.Get<1>() = TEXT("Test4");
        TupleTest5.Get<2>() = 5.55f;
    
        //값 출력
        UE_LOG(LogClass, Warning, TEXT("Test1 (%d, %s)"), TupleTest.Get<0>(), *TupleTest.Get<1>());
        UE_LOG(LogClass, Warning, TEXT("Test2 (%d, %s)"), TupleTest2.Get<0>(), *TupleTest2.Get<1>());
        UE_LOG(LogClass, Warning, TEXT("Test3 (%d, %s)"), TupleTest3.Get<0>(), *TupleTest3.Get<1>());
        UE_LOG(LogClass, Warning, TEXT("Test4 (%d, %s)"), TupleTest4.Get<0>(), *TupleTest4.Get<1>());
        UE_LOG(LogClass, Warning, TEXT("Test5 (%d, %s, %f)"), TupleTest5.Get<0>(), *TupleTest5.Get<1>(), TupleTest5.Get<2>());

    결과 화면


    한가지 특이점이 있다면 Test3에 있는 Key와 Value는 자료형이 2개인 TTuple에서만 사용가능하다. 아마도 TMap에 있는 TTuple로 인식하는듯 하다.

    // helps ranged for loop iterate across TMap
    template<class KeyType, class ValueType>
    class TTuple
    {
    public:
        KeyType Key;
        ValueType Value;
    };

    담겨진 값을 설정하거나 가져오고자 할 때 모두 Get 함수를 사용하면 된다. 참조자로 넘겨주기 때문이다.

    요약

    • TTuple은 C++에 있던 std::tuple을 언리얼용으로 만든 것이다.
    • UObject가 아니여서 UPROPERTY나 UFUNCTION으로 사용할 수 없다.
    반응형

    댓글

    Designed by JB FACTORY