Cache all objects at the start and detect the changes in the array (or the list). To elaborate more, have a list like this: //This list holds all the GameObjects that are currently in the game. private List<GameObject> _existingObjects = new List<GameObject>(); And call this method at the beginning of the game, and every time a scene is loaded: //using System.Linq; public List<GameObject> FindNewGameObjects() { //Get all GameObjects. var allObjects = (FindObjectsOfType(typeof(GameObject)) as GameObject[]).ToList(); //Substract the existing GameObjects from all GameObjects, so the result will be the new ones. var result = allObjects.Except(_existingObjects).ToList(); //Update our list. _existingObjects = allObjects; //Return the result. return result; } The return of the `FindNewGameObjects()` method will be the list of GameObjects that came with the loaded scene. ***Note:** The code is not tested.*