`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其实一开始就确立好了 就是实例数组的长度,也可以说是在末尾添加