sounds like a solid system! haha. i had a similar thing going with a game engine i wrote for XNA. i would have a stack of ‘scene’ objects, that i would pop or push. worked very well for basic 2d games! was pretty solid too. push on a main menu scene…user clicks play/options/credits, push on the play/options/credits scene, player exits back - pop off the top scene and your back to where you came from. love designing the backends of engines. i have not done anything TOO major yet (I am studying game programming at Qantm College) and engine programming was next trimester, but i did manage to roll my own engine for XNA during the summer break… so much fun.
unity handles gameobjects a little differently…i can only instantiate cookiecutter versions of each object, (prefabs) and only save floats, strings, ints, doubles, just basic data. this means i give the player a brand new ship each scene, and apply damage to it.
http://imageshack.us/m/190/3190/unledbx.png
the system is really cool, i reckon! i can assign what prefab gets spawned on destruction as well, so i can literally have half of a battleship snapping off mid battle if it recieves too much damage… the component that is going to snap off (the front half, in this case) will call its destroy() function upon reaching 0 health. this spawns an explosion effect and instantiates a free-floating, broken version of the front half of the battleship… how cool would that look!