OK. I figured it out.
I wasn’t calling Super::BeginPlay().
I initially set StaticMeshActor as the parent class and switched to Actor when Destroy wasn’t working. So the default Actor functions weren’t set up for me and I had to write them myself.
I wrote my BeginPlay function to do one thing and forgot to call Super::BeginPlay(). AActor::BeginPlay() calls SetLifeSpan() and it seems like it does other things you need in order to destroy an actor (though I can’t figure out exactly which lines do this).
3 Likes