Exemple #1
0
    public static void GameReadExcel()
    {
        MyDataBase mdb = ScriptableObject.CreateInstance <MyDataBase>();

        mdb.m_EventList  = new List <EventData>();
        mdb.m_RewardList = new List <EventReward>();
        mdb.m_DramaList  = new List <Drama>();

        FileStream       stream      = File.Open(Application.dataPath + excelPath, FileMode.Open, FileAccess.Read);
        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
        DataSet          result      = excelReader.AsDataSet();

        //读表一
        int rows = result.Tables[0].Rows.Count;//获取行数

        for (int i = 2; i < rows; i++)
        {
            string skill     = result.Tables[0].Rows[i][0].ToString();
            string skillBase = result.Tables[0].Rows[i][1].ToString();
            for (int k = 0; k < 3; ++k)
            {
                EventData ed = ScriptableObject.CreateInstance <EventData>();

                string eventID   = result.Tables[0].Rows[i][k * 6 + 0 + 3].ToString();
                string eventName = result.Tables[0].Rows[i][k * 6 + 1 + 3].ToString();
                string need      = result.Tables[0].Rows[i][k * 6 + 2 + 3].ToString();
                string needStage = result.Tables[0].Rows[i][k * 6 + 3 + 3].ToString();
                string preEvent  = result.Tables[0].Rows[i][k * 6 + 4 + 3].ToString();
                string eventType = result.Tables[0].Rows[i][k * 6 + 4 + 3].ToString();

                ed.MainSkillBase = (Person.SkillType)Enum.Parse(typeof(Person.SkillType), skillBase);
                ed.MainSkillType = (Person.SkillList)Enum.Parse(typeof(Person.SkillList), skill);
                ed.EventID       = int.Parse(eventID);
                ed.EventName     = eventName;
                ed.isComplet     = false;
                ed.needRate      = float.Parse(need);

                ed.needStageFlag = stringToFlag(needStage);
                ed.eventTypeFlag = stringToFlag(eventType);

                mdb.m_EventList.Add(ed);
            }
        }

        //读表二
        rows = result.Tables[1].Rows.Count;//获取行数
        for (int i = 1; i < rows; ++i)
        {
            EventReward eR = ScriptableObject.CreateInstance <EventReward>();
            eR.EventID = int.Parse(result.Tables[1].Rows[i][0].ToString());

            string skillR = result.Tables[1].Rows[i][1].ToString();
            if (skillR != "")
            {
                eR.eventP_Skill = (Person.SkillList)Enum.Parse(typeof(Person.SkillList), skillR);
                eR.eventP_Age   = int.Parse(result.Tables[1].Rows[i][2].ToString());
            }
            else
            {
                eR.eventP_Skill = Person.SkillList.None;
                eR.eventP_Age   = 0;
            }

            string BaseChangge = result.Tables[1].Rows[i][3].ToString();
            if (BaseChangge != "")
            {
                eR.eventBaseType = (Person.SkillType)Enum.Parse(typeof(Person.SkillType), BaseChangge);
                eR.eventBase     = float.Parse(result.Tables[1].Rows[i][4].ToString());
            }
            else
            {
                eR.eventBaseType = Person.SkillType.None;
                eR.eventBase     = 0;
            }

            eR.relationTarget = (EventReward.RelationShipChangeTarget) int.Parse(result.Tables[1].Rows[i][5].ToString());
            if ((int)eR.relationTarget < 2)
            {
                eR.targetKey1 = int.Parse(result.Tables[1].Rows[i][6].ToString());
            }
            if ((int)eR.relationTarget == 0)
            {
                eR.targetKey2 = int.Parse(result.Tables[1].Rows[i][7].ToString());
            }
            if ((int)eR.relationTarget != 4)
            {
                eR.relationshipChangeValue = float.Parse(result.Tables[1].Rows[i][8].ToString());
            }

            eR.coreAreaChangge = float.Parse(result.Tables[1].Rows[i][9].ToString());
            eR.baseAreaChangge = float.Parse(result.Tables[1].Rows[i][10].ToString());
            eR.Goal            = int.Parse(result.Tables[1].Rows[i][11].ToString());
            eR.Drama           = result.Tables[1].Rows[i][12].ToString();

            mdb.m_RewardList.Add(eR);
        }

        //读表三
        rows = result.Tables[2].Rows.Count;//获取行数
        for (int i = 1; i < rows; ++i)
        {
            Drama d = ScriptableObject.CreateInstance <Drama>();
            d.dialoqueList = new List <Dialogue>();
            d.skillType    = (Person.SkillList)Enum.Parse(typeof(Person.SkillList), result.Tables[2].Rows[i][0].ToString());

            string dialoques = result.Tables[2].Rows[i][1].ToString();
            for (int s = 0; s < dialoques.Length; ++s)
            {
                //寻找标签
                while (dialoques[s] != '[')
                {
                    ++s;
                }
                int ns = s;
                while (dialoques[ns] != ']')
                {
                    ++ns;
                }

                string   talker = dialoques.Substring(s + 1, ns - s - 1);
                Dialogue dia    = ScriptableObject.CreateInstance <Dialogue>();
                switch (talker)
                {
                case "pb":
                    dia.talker = Dialogue.Talker.back;
                    break;

                case "player":
                    dia.talker = Dialogue.Talker.player;
                    break;

                case "person":
                    dia.talker = Dialogue.Talker.person;
                    break;

                default:
                    dia.talker = Dialogue.Talker.none;
                    break;
                }

                s = ns;
                while (dialoques[ns] != '[')
                {
                    ++ns;
                    if (ns == dialoques.Length)
                    {
                        break;
                    }
                }

                string words = dialoques.Substring(s + 1, ns - s - 1);
                dia.words = words;
                d.dialoqueList.Add(dia);

                s = ns - 1;
            }

            mdb.m_DramaList.Add(d);
        }

        AssetDatabase.CreateAsset(mdb, "Assets/Resources/MyDataBase.asset");
        Selection.activeObject = mdb;
    }
Exemple #2
0
//Stuff for adding and maintaining the Rewards List of EventRewards
#if UNITY_EDITOR
    public void Add(EventReward reward)
    {
        Rewards.Add(reward);
        CleanList();
        Save();
    }