private void DrawFields() { if (string.IsNullOrEmpty(chooseFileName)) { return; } if (!TableConfigBase.tableConfigOtherInfo.ContainsKey(chooseFileName)) { return; } TableConfigOtherInfo infos = TableConfigBase.tableConfigOtherInfo[chooseFileName]; infos.configDescription = EditorDrawGUIUtil.DrawBaseValue("配置文件描述", infos.configDescription).ToString(); GUILayout.BeginHorizontal("box"); GUILayout.Box("字段:"); GUILayout.FlexibleSpace(); if (GUILayout.Button("+", GUILayout.Width(50))) { TableConfigFieldInfo f = new TableConfigFieldInfo(); f.fieldName = "NewField" + infos.fieldInfoDic.Count; while (infos.fieldInfoDic.ContainsKey(f.fieldName)) { f.fieldName += "_0"; } infos.fieldInfoDic.Add(f.fieldName, f); } GUILayout.EndHorizontal(); DrawFieldData(infos); }
private void DrawFieldData(TableConfigOtherInfo info) { pos1 = GUILayout.BeginScrollView(pos1, "CurveEditorBackground"); List <TableConfigFieldInfo> list = new List <TableConfigFieldInfo>(info.fieldInfoDic.Values); for (int i = 0; i < list.Count; i++) { TableConfigFieldInfo temp = list[i]; temp = (TableConfigFieldInfo)EditorDrawGUIUtil.DrawBaseValue("◆", temp); Type tempType = TableConfigTool.ConfigFieldValueType2Type(temp.fieldValueType); if (temp.defultValue == null || tempType.FullName != temp.defultValue.GetType().FullName) { temp.defultValue = ReflectionUtils.CreateDefultInstance(tempType); } GUILayout.Space(3); if (GUILayout.Button("Delete")) { if (EditorUtility.DisplayDialog("警告", "是否删除字段", "OK", "Cancel")) { // info.fieldInfoDic.Remove(temp.fieldName); list.Remove(temp); } } GUILayout.Space(6); } GUILayout.EndScrollView(); info.fieldInfoDic.Clear(); for (int i = 0; i < list.Count; i++) { TableConfigFieldInfo temp = list[i]; info.fieldInfoDic.Add(temp.fieldName, temp); } }
private void CheckEditConfigData() { TableConfigOtherInfo infos = TableConfigBase.tableConfigOtherInfo[chooseFileName]; List <ConfigRowData> datas = currentEditConfigData.configRowDataList[index]; List <string> fs = new List <string>(infos.fieldInfoDic.Keys); foreach (var item in fs) { if (!currentEditConfigData.IsHaveRow(item)) { currentEditConfigData.AddRow(item, infos.fieldInfoDic[item].defultValue); return; } } for (int i = 0; i < datas.Count; i++) { ConfigRowData d = datas[i]; if (!infos.fieldInfoDic.ContainsKey(d.fieldName)) { currentEditConfigData.RemoveFieldValue(d.fieldName); break; } TableConfigFieldInfo field = infos.fieldInfoDic[d.fieldName]; Type tempType = TableConfigTool.ConfigFieldValueType2Type(field.fieldValueType); if (d.value == null || tempType.FullName != d.value.GetType().FullName) { d.value = field.defultValue; break; } } }
void OnGUI() { toolbarOption0 = GUILayout.Toolbar(toolbarOption0, toolbarTexts0, GUILayout.Width(Screen.width)); switch (toolbarOption0) { case 0: GUILayout.Space(8); ChooseFile(); GUILayout.Space(5); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); toolbarOption = GUILayout.Toolbar(toolbarOption, toolbarTexts, GUILayout.Width(Screen.width * 3 / 4f)); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.Space(5); switch (toolbarOption) { case 0: DrawTableDataGUI(); break; case 1: DrawFields(); break; } GUILayout.FlexibleSpace(); GUILayout.Space(5); if (GUILayout.Button("保存配置文件")) { CheckEditConfigData(); TableConfigOtherInfo infos = TableConfigBase.tableConfigOtherInfo[chooseFileName]; string content = TableConfigTool.ConfigInfo2TableText(infos, currentEditConfigData); string path = CreateConfigClassEditor.SaveConfigFilePath + "/" + chooseFileName + ".txt"; FileUtils.CreateTextFile(path, content); CreateConfigClassEditor.CreateConfigClassFile(content, chooseFileName); AssetDatabase.Refresh(); } break; case 1: GUILayout.Space(5); NewTableConfig(); break; } }
private void LoadData(string fileName) { if (string.IsNullOrEmpty(fileName)) { return; } Type t = ReflectionUtils.GetTypeByTypeFullName(fileName); List <TableConfigBase> listdata = TableConfigManager.GetConfig(t); currentEditConfigData = new ConfigFileContents(); foreach (var item in listdata) { Type type = item.GetType(); FieldInfo[] fInfos = type.GetFields(); List <ConfigRowData> hang = new List <ConfigRowData>(); foreach (var f in fInfos) { object value = f.GetValue(item); ConfigRowData co = new ConfigRowData(); co.fieldName = f.Name; co.value = value; hang.Add(co); } currentEditConfigData.configRowDataList.Add(hang); } TableConfigOtherInfo info = TableConfigBase.tableConfigOtherInfo[fileName]; tableConfigOtherInfo = new TableConfigOtherInfo(); tableConfigOtherInfo.configDescription = info.configDescription; tableConfigOtherInfo.fieldInfoDic = new Dictionary <string, TableConfigFieldInfo>(); foreach (var item in info.fieldInfoDic) { TableConfigFieldInfo f = new TableConfigFieldInfo(); f.fieldName = item.Value.fieldName; f.description = item.Value.description; f.defultValue = item.Value.defultValue; f.fieldValueType = item.Value.fieldValueType; tableConfigOtherInfo.fieldInfoDic.Add(item.Key, f); } }
private void NewTableConfig() { GUILayout.BeginHorizontal("box"); newFileName = EditorDrawGUIUtil.DrawBaseValue("新建配置文件:", newFileName).ToString(); if (GUILayout.Button("确定", GUILayout.Width(50))) { if (ResourcePathManager.ContainsFileName(newFileName) || string.IsNullOrEmpty(newFileName)) { EditorUtility.DisplayDialog("警告", "名字不能为空或重复", "OK"); } else { chooseFileName = newFileName; fileNames.Add(newFileName); } } GUILayout.EndHorizontal(); if (string.IsNullOrEmpty(newFileName)) { return; } if (ResourcePathManager.ContainsFileName(newFileName)) { EditorGUILayout.HelpBox("文件名重复!!", MessageType.Error); return; } if (newConfigInfo == null) { newConfigInfo = new TableConfigOtherInfo(); } newConfigInfo.configDescription = EditorDrawGUIUtil.DrawBaseValue("配置文件描述:", newConfigInfo.configDescription).ToString(); GUILayout.Space(5); GUILayout.BeginHorizontal("box"); GUILayout.Box("添加字段:"); GUILayout.FlexibleSpace(); if (GUILayout.Button("+", GUILayout.Width(50))) { TableConfigFieldInfo f = new TableConfigFieldInfo(); f.fieldName = "NewField" + newConfigInfo.fieldInfoDic.Count; while (newConfigInfo.fieldInfoDic.ContainsKey(f.fieldName)) { f.fieldName += "_0"; } newConfigInfo.fieldInfoDic.Add(f.fieldName, f); } GUILayout.EndHorizontal(); DrawFieldData(newConfigInfo); if (newConfigInfo.fieldInfoDic.Count > 0 && GUILayout.Button("创建")) { GlobalEvent.AddEvent(EditorGlobalEventEnum.OnResourcesAssetsChange, (t) => { Debug.Log("OnResourcesAssetsChange"); AssetsSortManagement.SetLayer(newFileName, configLayerName); AssetsSortManagement.Save(); newFileName = ""; newConfigInfo = null; }, true); string content = TableConfigTool.ConfigInfo2TableText(newConfigInfo, null); string path = CreateConfigClassEditor.SaveConfigFilePath + "/" + newFileName + ".txt"; FileUtils.CreateTextFile(path, content); CreateConfigClassEditor.CreateConfigClassFile(content, newFileName); AssetDatabase.Refresh(); } }
void DrawTableDataGUI() { if (currentEditConfigData == null) { return; } TableConfigOtherInfo infos = TableConfigBase.tableConfigOtherInfo[chooseFileName]; GUILayout.Space(5); GUILayout.BeginHorizontal("box"); GUILayout.FlexibleSpace(); if (GUILayout.Button("+", GUILayout.Width(50))) { currentEditConfigData.AddLine(infos); index = currentEditConfigData.configRowDataList.Count - 1; } if (GUILayout.Button("-", GUILayout.Width(50))) { if (EditorUtility.DisplayDialog("警告", "要删除当前页数据?", "OK", "Cancel")) { currentEditConfigData.configRowDataList.RemoveAt(index); return; } } GUILayout.EndHorizontal(); if (currentEditConfigData.configRowDataList.Count == 0) { return; } GUILayout.Space(5); // Debug.Log("Index: " + index + " count : " + currentEditConfigData.configRowDataList.Count); List <ConfigRowData> datas = currentEditConfigData.configRowDataList[index]; //确保字段定义和数据一致 CheckEditConfigData(); pos0 = GUILayout.BeginScrollView(pos0, "CurveEditorBackground"); for (int i = 0; i < datas.Count; i++) { GUILayout.BeginVertical("U2D.createRect"); ConfigRowData d = datas[i]; EditorGUILayout.HelpBox("字段描述:" + infos.fieldInfoDic[d.fieldName].description, MessageType.Info, true); d.value = EditorDrawGUIUtil.DrawBaseValue(d.fieldName, d.value); GUILayout.EndVertical(); GUILayout.Space(8); } GUILayout.EndScrollView(); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal("box"); int count = currentEditConfigData.configRowDataList.Count; if (GUILayout.Button("上一页", GUILayout.Width(ItemWith), GUILayout.Height(ItemHeight))) { if (index <= 0) { index = count - 1; } else { index--; } } GUILayout.Label("共" + count + "页,当前" + (index + 1) + "页"); temp = EditorGUILayout.IntField("跳转:", temp); if (GUILayout.Button("跳转", GUILayout.Width(ItemWith), GUILayout.Height(ItemHeight))) { if ((temp - 1) <= 0) { index = count - 1; } else if (temp >= count) { index = count - 1; } else { index = temp - 1; } temp = index + 1; } if (GUILayout.Button("下一页", GUILayout.Width(ItemWith), GUILayout.Height(ItemHeight))) { if (index >= count - 1) { index = 0; } else { index++; } } GUILayout.EndHorizontal(); GUILayout.Space(5); }