Using LoadLevelAdditive for common game engine elements?

I’m using prefabs for shared game engine components, but breaking of prefab links and child GameObjects makes it somewhat inconvenient.

I’m thinking of using LoadLevelAdditive to load shared game engine components, since that will preserve prefab links. One potential issue I see is that I can’t count on LoadLevelAdditive components to be available on frame one, but I can work around that.

Are there any obvious pitfalls with this approach, possible alternatives, or it’s viable approach to try?

That’s a pretty interesting method, actually. If you haven’t already, you might try setting Object.DontDestroyOnLoad for those objects, so that you only have to load them in once.

In my own experience, most “manager” objects tend to be fairly lightweight script objects that are cheap to attach and create on the fly (for example, the first time they’re accessed by some static “get” method). If you have a bunch of assets to bring in with them, this would be less useful.

As an alternative, could you keep a “manager” prefab in each scene, and use LoadLevelAdditive() as a fallback method if that prefab can’t be found?