`AddInstance(const FTransform& InstanceTransform)`
本质上是去调用:
`AddInstanceInternal(PerInstanceSMData.Num(),nullptr,InstanceTransform)`
```cpp
int32 UInstancedStaticMeshComponent::AddInstance(const FTransform& InstanceTransform)
{
return AddInstanceInternal(PerInstanceSMData.Num(), nullptr, InstanceTransform);
}
```
```cpp
int32 UInstancedStaticMeshComponent::AddInstanceInternal(int32 InstanceIndex, FInstancedStaticMeshInstanceData* InNewInstanceData, const FTransform& InstanceTransform)
{
FInstancedStaticMeshInstanceData* NewInstanceData = InNewInstanceData;
if (NewInstanceData == nullptr)
{ NewInstanceData = new(PerInstanceSMData) FInstancedStaticMeshInstanceData();
}
SetupNewInstanceData(*NewInstanceData, InstanceIndex, InstanceTransform);
// Add custom data to instance
PerInstanceSMCustomData.AddZeroed(NumCustomDataFloats);
#if WITH_EDITOR
if (SelectedInstances.Num())
{ SelectedInstances.Add(false);
}#endif
PartialNavigationUpdate(InstanceIndex);
InstanceUpdateCmdBuffer.Edit();
MarkRenderStateDirty();
return InstanceIndex;
```
这里的Index其实一开始就确立好了
就是实例数组的长度,也可以说是在末尾添加