public void LoadTypes() { m_types.Clear(); m_externalTypes.Clear(); m_combinedTypes.Clear(); TextAsset[] types = Resources.LoadAll <TextAsset>("EnemyTypes"); foreach (TextAsset typeText in types) { EnemyType type = JsonUtility.FromJson <EnemyType>(typeText.text); if (type != null) { m_types.Add(type); } } List <string> files = new List <string>(); FileSearch.RecursiveRetrieval(Application.dataPath + "/Data/EnemyTypes/", ref files); if (files.Count > 0) { foreach (string file in files) { if (file.ToLower().EndsWith(".json")) { StreamReader reader = new StreamReader(file); EnemyType type = JsonUtility.FromJson <EnemyType>(reader.ReadToEnd()); if (type != null) { m_externalTypes.Add(type); } reader.Close(); } } } foreach (EnemyType type in m_types) { EnemyType external = m_externalTypes.Find(nt => nt.m_type == type.m_type); if (external != null) { EnemyType combined = type.Clone(); combined.Combine(external, true); m_combinedTypes.Add(combined); } else { m_combinedTypes.Add(type); } } if (m_externalTypes.Count > 0) { foreach (EnemyType external in m_externalTypes) { if (!m_types.Exists(nt => nt.m_type == external.m_type)) { external.AppendDataMarker(); m_combinedTypes.Add(external); } } } }