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);