public static void AddScripts(GameObject go, Data_EfffectArray data)
 {
     for (int i = 0; i < data.effects.Count; i++)
     {
         int         eid = data.effects[i];
         Data_Effect de  = Excel_Effect.Instance().GetById(eid);
         Type        t   = Type.GetType(de.name);
         Component   c   = go.AddComponent(t);
         FieldInfo[] fis = t.GetFields();
         foreach (FieldInfo fi in fis)
         {
             foreach (var item in de.effect)
             {
                 if (fi.Name == item.Key)
                 {
                     fi.SetValue(c, item.Value);
                 }
             }
         }
     }
 }
示例#2
0
    public override void LoadData(string content)
    {
        if (datasList.Count != 0)
        {
            return;
        }
        string[] results = ReadExcel(content, true);
        int      nLen    = results.Length;

        for (int i = 1; i < nLen; i++)
        {
            string[] datas = ReadExcelRow(results[i]);
            if (datas.Length == 0)
            {
                continue;
            }
            Data_Effect data   = new Data_Effect();
            int         istart = 0;
            data.id = System.Convert.ToInt32(datas[istart]);
            istart++;
            data.name = datas[istart];
            istart++;
            //UnityEngine.Debug.Log("data:" + datas[istart]+ " istart:" + istart);
            string[] array = datas[istart].Split(',');
            List <KeyValuePair <string, float> > effect = null;
            for (int j = 0; j < array.Length; j++)
            {
                string[] pairs = array[j].Split(':');
                if (effect == null)
                {
                    effect = new List <KeyValuePair <string, float> >();
                }
                effect.Add(new KeyValuePair <string, float>(pairs[0], System.Convert.ToInt32(pairs[1])));
            }
            data.effect = effect;
            datasList.Add(data);
        }
    }