示例#1
0
    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);
                }
            }
        }
    }