Пример #1
0
        public static void AnalyzeExcel(string excelPath, Action <List <KeyValuePair <string, object> > > callback)
        {
            try
            {
                FileStream fs = new FileStream(excelPath, FileMode.Open, FileAccess.Read);
                using (IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(fs))
                {
                    DataSet dataset = excelReader.AsDataSet();

                    DataTable dt = dataset.Tables[0];
                    {
                        Dictionary <int, string> colToTitleDic = new Dictionary <int, string>();

                        for (int row = 0; row < dt.Rows.Count; row++)
                        {
                            DataRow dr = dt.Rows[row];

                            if (row == 1)
                            {
                                for (int col = 0; col < dt.Columns.Count; col++)
                                {
                                    DataColumn dc    = dt.Columns[col];
                                    object     value = dr[dc];
                                    colToTitleDic.Add(col, value.ToString());
                                }
                            }
                            else if (row >= 3)
                            {
                                DropItemsDataAsset.DropItem dropItem = new DropItemsDataAsset.DropItem();

                                List <KeyValuePair <string, object> > pairs = new List <KeyValuePair <string, object> >();


                                foreach (var iterator in colToTitleDic)
                                {
                                    object value = GetDataTableData(dt, row, iterator.Key);
                                    pairs.Add(new KeyValuePair <string, object>(iterator.Value, value));
                                }

                                callback(pairs);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                EditorUtility.DisplayDialog("出错(一般是excel没有关闭)", e.ToString(), "确认");
            }
        }
Пример #2
0
        private void OnGUI()
        {
            dropItemsDataAsset = (DropItemsDataAsset)EditorGUILayout.ObjectField("dropItemsDataAsset",
                                                                                 dropItemsDataAsset, typeof(DropItemsDataAsset));

            excelPath = MyGUI.TextFieldWithTitle("表格路径", excelPath);

//            text = GUILayout.TextArea(text, new GUIStyle(){});

            if (MyGUI.Button("载入表格"))
            {
                dropItemsDataAsset.DropItemList.Clear();

                EditorTools.AnalyzeExcel(excelPath, (List <KeyValuePair <string, object> > pairs) =>
                {
                    DropItemsDataAsset.DropItem dropItem = new DropItemsDataAsset.DropItem();
                    foreach (var pair in pairs)
                    {
                        switch (pair.Key)
                        {
                        case "id":
                            dropItem.Id = Convert.ToString(pair.Value);
                            break;

                        case "MonsterID":
                            dropItem.RoleId = Convert.ToString(pair.Value);
                            break;

                        case "Name":
                            dropItem.RoleName = Convert.ToString(pair.Value);
                            break;

                        case "Lv":
                            string[] lvs    = Convert.ToString(pair.Value).Split(';');
                            dropItem.LvFrom = Convert.ToInt32(lvs[0]);
                            dropItem.LvTo   = Convert.ToInt32(lvs[1]);
                            break;

                        case "DropOne":
                            dropItem.DropOne = Convert.ToInt32(pair.Value);
                            break;

                        case "DropTwo":
                            dropItem.DropTwo = Convert.ToInt32(pair.Value);
                            break;

                        case "DropThree":
                            dropItem.DropThree = Convert.ToInt32(pair.Value);
                            break;

                        case "DropSoul":
                            dropItem.DropSoul = Convert.ToInt32(pair.Value);
                            break;
                        }
                    }
                    dropItemsDataAsset.DropItemList.Add(dropItem);
                });

                EditorUtility.SetDirty(dropItemsDataAsset);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            if (MyGUI.Button("测试"))
            {
                text = "";

                int instanceLevelMin = 1;
                int instanceLevelMax = 99;

                var roleIds = DropItemsDataAsset.Instance.GetAllRoleId();
                foreach (var roleId in roleIds)
                {
                    for (int instanceLevel = instanceLevelMin; instanceLevel <= instanceLevelMax; instanceLevel++)
                    {
                        List <string> dropItemIdList = DropItemsDataAsset.Instance.GetDropItemIdList(instanceLevel, roleId);
                        int           soulCount      = DropItemsDataAsset.Instance.GetDropSoulCount(instanceLevel, roleId);

                        text += "id: " + roleId + ", " + "instanceLevel: " + instanceLevel + ", dropItems: ";
                        EditorUtility.DisplayProgressBar("测试", "id: " + roleId + ", " + "instanceLevel: " + instanceLevel + ", dropItems: ", (float)instanceLevel / instanceLevelMax);

                        if (dropItemIdList != null)
                        {
                            for (int i = 0; i < dropItemIdList.Count; i++)
                            {
                                var dropItemId = dropItemIdList[i];
                                if (i == dropItemIdList.Count - 1)
                                {
                                    text += dropItemId;
                                    text += "\n";
                                }
                                else
                                {
                                    text += dropItemId;
                                    text += ", ";
                                }
                            }
                        }

                        // 掉落魂数目 add by TangJian 2019/3/13 12:55
                        if (soulCount > 0)
                        {
                            text += ", Soulx" + soulCount;
                        }

                        text += "\n";
                    }
                }

                EditorUtility.ClearProgressBar();
            }

            if (MyGUI.Button("测试1"))
            {
//                List<string> itemList = ItemManager.Instance.GetItemIdListDescendingOrder(0, 1, 0);
//                foreach (var itemId in itemList)
//                {
//                    text += itemId;
//                    text += "\n";
//                }

                List <string> itemList = DropItemsDataAsset.Instance.GetDropItemIdList(9, "Human");
                foreach (var itemId in itemList)
                {
                    text += itemId;
                    text += "\n";
                }
            }

            textScrollViewPos = GUILayout.BeginScrollView(textScrollViewPos);
            text = EditorGUILayout.TextArea(text);
            GUILayout.EndScrollView();
        }
Пример #3
0
        private void OnGUI()
        {
            roleUpgradeDataAsset = (RoleUpgradeDataAsset)EditorGUILayout.ObjectField("roleUpgradeDataAsset",
                                                                                     roleUpgradeDataAsset, typeof(DropItemsDataAsset));

            excelPath = MyGUI.TextFieldWithTitle("表格路径", excelPath);

//            text = GUILayout.TextArea(text, new GUIStyle(){});

            if (MyGUI.Button("载入表格"))
            {
                roleUpgradeDataAsset.Clear();

                EditorTools.AnalyzeExcel(excelPath, (List <KeyValuePair <string, object> > pairs) =>
                {
                    DropItemsDataAsset.DropItem dropItem = new DropItemsDataAsset.DropItem();

                    int lv  = -1;
                    int exp = -1;

                    foreach (var pair in pairs)
                    {
                        switch (pair.Key)
                        {
                        case "lv":
                            lv = Convert.ToInt32(pair.Value);
                            break;

                        case "exp":
                            exp = Convert.ToInt32(pair.Value);
                            break;
                        }
                    }

                    Debug.Assert(lv >= 1 && exp >= 0);
                    roleUpgradeDataAsset.AddItem(lv, exp);
                });

                EditorUtility.SetDirty(roleUpgradeDataAsset);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }

            if (MyGUI.Button("测试"))
            {
                outputText = "";

                outputText += "通过经验获取等级:\n";
                for (int exp = 0; exp <= RoleUpgradeDataAsset.Instance.GetLevelMaxExp() * 2; exp++)
                {
                    int level = RoleUpgradeDataAsset.Instance.GetLevel(exp);

                    outputText += "exp: " + exp + " -> level: " + level + "\n";
                }

                for (int i = 0; i < 10; i++)
                {
                    outputText += "\n";
                }

                outputText += "通过等级获取经验:\n";
                for (int level = 1; level <= RoleUpgradeDataAsset.Instance.GetLevelMax(); level++)
                {
                    int exp = RoleUpgradeDataAsset.Instance.GetExp(level);

                    outputText += "level: " + level + " -> exp: " + exp + "\n";
                }
            }

            outputTextScrollViewPos = EditorGUILayout.BeginScrollView(outputTextScrollViewPos, GUILayout.ExpandWidth(true));

            outputText = EditorGUILayout.TextArea(outputText);

            EditorGUILayout.EndScrollView();
        }