TIrisFastArrayEditor RemoveAtSwap 不可用问题

template <typename FastArrayType>
void TIrisFastArrayEditor<FastArrayType>::RemoveAtSwap(int32 ItemIdx)
{
    FastArrayItemArrayType& ItemArray = FastArray.GetItemArray();

    if (ItemIdx >= 0 && ItemArray.Num() > ItemIdx)
    {
       ItemArray.RemoveAtSwap(ItemIdx);

       // We just need to dirty the modified item
       if (ItemArray.Num() != 0)
       {
          MarkItemDirty(ItemIdx);
       }
       else
       {
          MarkArrayDirty();
       }
    }
}
这个函数无法使用,数组的RemoveAtSwap需要传递引用,但是这里传的是index.可以告诉我怎么改可以让我使用这个方法,现在移除数组中的元素会同步整个数组似乎不必要

重现步骤

Hi,

你好,“数组的RemoveAtSwap需要传递引用”,我不太明白你是指哪里?我看TArray.RemoveAtSwap的实现,是传入一个index,无需传入引用。

在TIrisFastArrayEditor中实现的RemoveAtSwap调用了 MarkItemDirty 但是MarkItemDirty如下所示需要传递引用

template <typename FastArrayType>

void TIrisFastArrayEditor<FastArrayType>::MarkItemDirty(FastArrayItemType& Item)

{

const FReplicationStateHeader& Header = FIrisFastArraySerializerPrivateAccessor::GetReplicationStateHeader(FastArray);

if (!Header.IsBound())

{

FastArray.MarkItemDirty(Item);

return;

}

[Image Removed]

自己不敢乱改,怕出现预期之外的问题.想问问怎么改比较合适

您在MarkItemDirty上面加上这行代码应该就可以了

FastArrayItemType& Item = FastArray.GetItemArray()[ItemIdx]; 
MarkItemDirty(Item);