首页 > 解决方案 > 如何更新 TArray 中的唯一项

问题描述

我正在TArray使用以下方法在 * 中添加和更新唯一项目。

USTRUCT() struct FMyObject
{
    GENERATED_BODY()
    UPROPERTY(SaveGame) // example for serialization
    FName key;
    UPROPERTY(SaveGame) // example for serialization
    int someContent;
}

UCLASS() class FMyObjectOwner : public UObject
{
    GENERATED_BODY()
    AddOrReplaceUnique(const FMyObject& newObject)
    {
        // Remove possibly existing entry.

        const auto index = myObjects.IndexOfByKey(newObject.key);
        if (index != INDEX_NONE)
        {
            myObjects.RemoveAtSwap(index, 1, false);
        }

        // Add new.
        myObjects.Add(newObject);
    }
    UPROPERTY(SaveGame) // example for serialization
    TArray<FMyObject> myObjects;
}

是否有更短或更方便的方法(在一个调用中删除和添加?)来更新TArray使用 UnrealEngine >= 4.24 中的唯一项目?


*我使用 aTArray而不是 aTMap或 aTSet因为我希望它被垃圾收集并被序列化。我不确定后一种容器类型是否支持两者。

标签: c++uniqueunreal-engine4

解决方案


推荐阅读