My game includes a UI that loads upon startup, sets itself with DontDestroyOnLoad on Awake and persists between level loads. The structure is as follows: UI (in scene root, no parent) - has multiple scripts attached Canvas (with children) Audio - has a single Component, AudioSource In the Editor, the system works perfectly - the UI object, along with all its components and child objects, maintain their state. In a Windows build, however, after 3 or 4 level loads, the following message appears in the player log: Unloading 3 Unused Serialized files (Serialized files now loaded: 0) UnloadTime: 1.104330 ms Unloading 214 unused Assets to reduce memory usage. Loaded Objects now: 1062. Total: 0.683746 ms (FindLiveObjects: 0.046304 ms CreateObjectMapping: 0.033523 ms MarkObjects: 0.281600 ms DeleteObjects: 0.317847 ms) After this message is generted, the UI objects, its scripts, and the child Canvas all stay alive correctly, but the Audio object gets destroyed. This doesn't seem like intended engine behavior, any thoughts on the matter? [EDIT] I moved the AudioSource component to the UI object, and now it is being preserved. So something to do with the fact that the Audio game object is a standalone object with no scene references to it (it is being accessed by GetComponentInChildren) is causing it to be destroyed regardless of the DontDestroyOnLoad on its hierarchy. Bug?