Destroy(this.gameObject)

When destroying objects this way it doesn’t actually destroy them until end of frame and even if you check for null they still return true. What’s the proper way to check if they are scheduled to be destroyed?

I’ve been setting up a separate bool to check for this but I think there should be an official way I can not figure out.

Manage them from a different script on a manager.

If you want extreme control by frame of them being removed, you could set their position off screen and then destroy them there.

Generally avoid destroy, rather use a pooling solution and reuse the object if you can.