// overloading for creature which is containing treasures... public static List <ItemSaveData> GenerateItems(CreatureSaveData saveData) { List <ItemSaveData> itemsSaveData = new List <ItemSaveData>(); // get creature object from resources GameObject creaturePrefab = Resources.Load <GameObject>("Creatures/" + saveData.Name); GameObject creatureObj = Instantiate(creaturePrefab); Creature creature = creatureObj.GetComponent <Creature>(); foreach (GameObject treasureObj in creature.Treasures) { Treasure treasure = treasureObj.GetComponent <Treasure>(); List <ItemSaveData> itemsSaveDataFromTreasure = GenerateItems(treasure.GetSaveData() as TreasureSaveData); itemsSaveData.AddRange(itemsSaveDataFromTreasure); } Destroy(creatureObj.gameObject); return(itemsSaveData); }