/// <summary> /// 显示Title /// </summary> private void GUITitleInfo() { GUI.color = new Color(0.8f, 0.8f, 0.8f); GUILayout.BeginHorizontal("OL Title"); GUI.color = Color.white; GUILayout.Space(-5); if (GUILayout.Button("保存", EditorGUIStyle.GetMiddleButton, GUILayout.ExpandHeight(true), GUILayout.Width(100))) { this.ShowNotification(new GUIContent("正在保存。。。")); _primaryKeyInfo.Values.Clear(); for (int i = 0; i < _serializeData.DataList.Count; i++) { string value = _serializeData.DataList[i].T2.ToString(); if (!_primaryKeyInfo.Values.ContainsKey(value)) { _primaryKeyInfo.Values.Add(value, 1); } else { _primaryKeyInfo.Values[value]++; } } TableDatabaseUtils.SavaGlobalData(); EditorUtility.SetDirty(_serializeData); AssetDatabase.SaveAssets(); } GUILayout.FlexibleSpace(); if (GUILayout.Button("添加", EditorGUIStyle.GetMiddleButton, GUILayout.ExpandHeight(true), GUILayout.Width(100))) { Test2 data = new Test2(); _serializeData.DataList.Add(data); if (_primaryKeyInfo.Values.ContainsKey(data.T2.ToString())) { _primaryKeyInfo.Values[data.T2.ToString()]++; } else { _primaryKeyInfo.Values.Add(data.T2.ToString(), 1); } _pageMaxNum = (_serializeData.DataList.Count / _excelConfig.ShowCount); if (_serializeData.DataList.Count % _excelConfig.ShowCount > 0) { _pageMaxNum++; } _pageNum = 1; } GUILayout.Space(-5); GUILayout.EndHorizontal(); }
void OnEnable() { //GetConfigPath(); //ReadConfig(); if (_selectConfigIndex >= 0) { if (_selectConfigIndex >= TableDatabaseUtils.TableConfigSerializeData.TableConfigList.Count) { _selectConfigIndex = 0; } else { _tempTableConfig = TableDatabaseUtils.TableConfigSerializeData.TableConfigList[_selectConfigIndex]; } } _enumArray = TableDatabaseUtils.GetEnums(); }
private void SettingGUI() { GUI.color = new Color(0.8f, 0.8f, 0.8f); GUILayout.BeginHorizontal("OL Title"); GUI.color = Color.white; GUILayout.Space(5); GUILayout.Label("Vector分割符:"); TableDatabaseUtils.TableConfigSerializeData.Setting.SplitVecChar = GUILayout.TextField(TableDatabaseUtils.TableConfigSerializeData.Setting.SplitVecChar, GUILayout.Width(40)); GUILayout.Space(5); GUILayout.Label("List分隔符:"); TableDatabaseUtils.TableConfigSerializeData.Setting.SplitListChar = GUILayout.TextField(TableDatabaseUtils.TableConfigSerializeData.Setting.SplitListChar, GUILayout.Width(40)); GUILayout.Space(5); if (GUILayout.Button("保存配置")) { TableDatabaseUtils.SavaGlobalData(); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); }
private void CheckPlayerData() { for (int i = 0; i < TableDatabaseUtils.TableConfigSerializeData.TableConfigList.Count; i++) { if (TableDatabaseUtils.TableConfigSerializeData.TableConfigList[i].TableName == "Test2") { _tableConfig = TableDatabaseUtils.TableConfigSerializeData.TableConfigList[i]; break; } } if (string.IsNullOrEmpty(_tableConfig.DataPath)) { string path = EditorUtility.SaveFilePanelInProject("保存文件", _tableConfig.TableName + ".asset", "asset", ""); if (string.IsNullOrEmpty(path)) { if (EditorUtility.DisplayDialog("保存失败", "路径为空!!!", "OK")) { return; } } _tableConfig.DataPath = path; _serializeData = ScriptableObject.CreateInstance <Test2SerializeData>(); TableDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic.Add(_tableConfig.TableName, new PrimaryKeyInfo()); _primaryKeyInfo = TableDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[_tableConfig.TableName]; _primaryKeyInfo.TableName = _tableConfig.TableName; _primaryKeyInfo.PrimaryKey = _tableConfig.PrimaryKey; _primaryKeyInfo.PrimaryType = _tableConfig.PrimaryType; _primaryKeyInfo.Values = new Dictionary <string, int>(); TableDatabaseUtils.SavaGlobalData(); AssetDatabase.CreateAsset(_serializeData, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } else { _serializeData = AssetDatabase.LoadAssetAtPath <Test2SerializeData>(_tableConfig.DataPath); _primaryKeyInfo = TableDatabaseUtils.PrimaryKeySerializeData.PrimaryKeyDic[_tableConfig.TableName]; if (_tableConfig.PrimaryKey != _primaryKeyInfo.PrimaryKey) { //更换主键 _primaryKeyInfo.TableName = _tableConfig.TableName; _primaryKeyInfo.PrimaryKey = _tableConfig.PrimaryKey; _primaryKeyInfo.PrimaryType = _tableConfig.PrimaryType; _primaryKeyInfo.Values = new Dictionary <string, int>(); for (int i = 0; i < _serializeData.DataList.Count; i++) { string value = _serializeData.DataList[i].T2.ToString(); if (!_primaryKeyInfo.Values.ContainsKey(value)) { _primaryKeyInfo.Values.Add(value, 1); } else { _primaryKeyInfo.Values[value]++; } } TableDatabaseUtils.SavaGlobalData(); } } _dataList = new List <Test2>(); _dataList.AddRange(_serializeData.DataList); }
private void GUIShowTableBody() { GUILayout.BeginArea(new Rect(3, 85, position.width - 20, position.height - 150)); _tableScrollView = GUILayout.BeginScrollView(_tableScrollView, false, false, GUI.skin.horizontalScrollbar, GUIStyle.none);// ); GUILayout.BeginVertical(); Test2 removeData = null; int begin = (_pageNum - 1) * _excelConfig.ShowCount; int end = Mathf.Min(_pageNum * _excelConfig.ShowCount, _dataList.Count); for (int i = begin; i < end; i++) { GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(_areaWidht + 30), GUILayout.MinHeight(30)); GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(30), GUILayout.ExpandHeight(true)); GUILayout.Space(5); if (GUILayout.Button("", "OL Minus")) { removeData = _dataList[i]; } GUILayout.EndHorizontal(); float columnsWidth = 0; if (_primaryKeyInfo.Values.ContainsKey(_dataList[i].T2.ToString())) { if (_primaryKeyInfo.Values[_dataList[i].T2.ToString()] > 1) { GUI.color = Color.red; } } columnsWidth = _excelConfig.ColumnsWidth[0]; GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(columnsWidth), GUILayout.MaxWidth(columnsWidth), GUILayout.ExpandHeight(true)); int key = (int)TableDatabaseUtils.RenderFieldInfoControl(columnsWidth, _tableConfig.FieldList[0].FieldType, _dataList[i].T2); if (key != _dataList[i].T2) { _primaryKeyInfo.Values[_dataList[i].T2.ToString()]--; if (_primaryKeyInfo.Values.ContainsKey(key.ToString())) { _primaryKeyInfo.Values[key.ToString()]++; } else { _primaryKeyInfo.Values.Add(key.ToString(), 1); } _dataList[i].T2 = key; } GUILayout.EndHorizontal(); GUI.color = Color.white; //GUILayout.BeginHorizontal(EditorGUIStyle.GetGroupBoxStyle(), GUILayout.Width(_excelConfig.ColumnsWidth[8]), GUILayout.ExpandHeight(true)); //GUILayout.Label(""); //GUILayout.EndHorizontal(); GUILayout.EndHorizontal(); } if (removeData != null) { _dataList.Remove(removeData); if (_serializeData.DataList.Contains(removeData)) { _serializeData.DataList.Remove(removeData); } _primaryKeyInfo.Values[removeData.T2.ToString()]--; } GUILayout.EndVertical(); GUILayout.EndScrollView(); GUILayout.EndArea(); }
private void WriteConfig() { TableDatabaseUtils.SavaGlobalData(); //EditorUtility.SetDirty(TableDatabaseUtils.TableConfigSerializeData); AssetDatabase.SaveAssets(); }
private void ShowConfigInfo() { _infoScollViewVec = GUILayout.BeginScrollView(_infoScollViewVec, false, false); List <FieldConfig> removeList = new List <FieldConfig>(); for (int i = 0; i < _tempTableConfig.FieldList.Count; i++) { FieldConfig fieldConfig = _tempTableConfig.FieldList[i]; GUILayout.BeginHorizontal("GroupBox"); GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.Label("列名:", GUILayout.Width(INFO_LABEL_WIDTH)); fieldConfig.Name = GUILayout.TextField(fieldConfig.Name, GUILayout.Width(INFO_TEXT_WIDTH)); GUILayout.Label("类型:", GUILayout.Width(INFO_LABEL_WIDTH)); int baseIndex = EditorGUILayout.Popup(fieldConfig.FieldIndex, TableDatabaseUtils.BaseType, GUILayout.Width(INFO_POPUP_WIDTH)); if (baseIndex != fieldConfig.FieldIndex) { fieldConfig.FieldIndex = baseIndex; fieldConfig.FieldType = TableDatabaseUtils.BaseType[baseIndex]; if (fieldConfig.FieldType == "enum" && !string.IsNullOrEmpty(fieldConfig.EnumName)) { for (int j = 0; j < _enumArray.Length; j++) { if (fieldConfig.EnumName == _enumArray[j]) { fieldConfig.EnumIndex = j; break; } } } } if (fieldConfig.FieldType == "List") { GUILayout.Label("集合类型:", GUILayout.Width(50)); int collectionIndex = EditorGUILayout.Popup(fieldConfig.GenericIndex, TableDatabaseUtils.GenericType, GUILayout.Width(INFO_POPUP_WIDTH)); if (collectionIndex != fieldConfig.GenericIndex) { fieldConfig.GenericIndex = collectionIndex; fieldConfig.GenericType = TableDatabaseUtils.GenericType[collectionIndex]; } } if (fieldConfig.FieldType == "enum") { GUILayout.Label("枚举类型:", GUILayout.Width(50)); fieldConfig.EnumIndex = EditorGUILayout.Popup(fieldConfig.EnumIndex, _enumArray, GUILayout.Width(INFO_POPUP_WIDTH)); fieldConfig.EnumName = _enumArray[fieldConfig.EnumIndex]; } GUILayout.FlexibleSpace(); if (GUILayout.Button("删除", "OL Minus")) { removeList.Add(fieldConfig); } GUILayout.EndHorizontal(); GUILayout.Space(5); GUILayout.BeginHorizontal(); GUILayout.Label("别名:", GUILayout.Width(INFO_LABEL_WIDTH)); fieldConfig.ShowName = GUILayout.TextField(fieldConfig.ShowName, GUILayout.Width(INFO_TEXT_WIDTH)); if (fieldConfig.FieldType == "int" || fieldConfig.FieldType == "string") { GUILayout.Label("外键:", GUILayout.Width(INFO_LABEL_WIDTH)); fieldConfig.HasForeignKey = GUILayout.Toggle(fieldConfig.HasForeignKey, "", GUILayout.Width(20));//, "MiniToolbarPopup" if (fieldConfig.HasForeignKey) { //GUILayout.Label("外键:", GUILayout.Width(INFO_LABEL_WIDTH)); string[] keys = TableDatabaseUtils.GetForeignKey(_tempTableConfig, fieldConfig.FieldType); if (keys.Length == 1) { fieldConfig.ForeignKeyIndex = 0; fieldConfig.ForeignKey = ""; keys = new string[0]; EditorGUILayout.Popup(fieldConfig.ForeignKeyIndex, keys, GUILayout.Width(INFO_POPUP_WIDTH)); } else { fieldConfig.ForeignKeyIndex = EditorGUILayout.Popup(fieldConfig.ForeignKeyIndex, keys, GUILayout.Width(INFO_POPUP_WIDTH)); fieldConfig.ForeignKey = keys[fieldConfig.ForeignKeyIndex]; } } } GUILayout.Space(10); GUILayout.Label("是否导出:", GUILayout.Width(INFO_LABEL_WIDTH + 20)); fieldConfig.IsExport = GUILayout.Toggle(fieldConfig.IsExport, "", GUILayout.Width(20));//, "MiniToolbarPopup" GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); } if (removeList.Count > 0) { for (int i = 0; i < removeList.Count; i++) { _tempTableConfig.FieldList.Remove(removeList[i]); //todo 删除一个表(同时删除数据和代码) } WriteConfig(); } GUILayout.EndScrollView(); }
/// <summary> /// 显示类型具体信息 /// </summary> private void ShowTypeInfo() { if (_tempTableConfig != null) { GUILayout.BeginArea(new Rect(220, 10, 570, 480), "", "box"); GUI.color = new Color(0.8f, 0.8f, 0.8f);; GUILayout.BeginHorizontal("OL Title"); GUI.color = Color.white; GUILayout.Label("Table信息"); GUILayout.FlexibleSpace(); if (GUILayout.Button("添加字段", "OL Plus")) { _tempTableConfig.FieldList.Add(new FieldConfig() { FieldIndex = 0, FieldType = "int", GenericIndex = 0, GenericType = "int" }); } GUILayout.EndHorizontal(); GUILayout.BeginVertical(); GUILayout.BeginArea(new Rect(10, 30, 550, 440), "", "box"); GUILayout.Space(5); GUILayout.BeginHorizontal(); GUILayout.Label("表名:", GUILayout.Width(INFO_LABEL_WIDTH)); _tempTableConfig.TableName = GUILayout.TextField(_tempTableConfig.TableName, GUILayout.Width(INFO_TEXT_WIDTH)); GUILayout.Label("别名:", GUILayout.Width(INFO_LABEL_WIDTH)); _tempTableConfig.ShowName = GUILayout.TextField(_tempTableConfig.ShowName, GUILayout.Width(INFO_TEXT_WIDTH)); GUILayout.Label("主键:", GUILayout.Width(INFO_LABEL_WIDTH)); string[] keys = TableDatabaseUtils.GetPrimaryKey(_tempTableConfig); if (keys.Length == 1) { EditorGUILayout.Popup(0, new string[0], GUILayout.Width(INFO_POPUP_WIDTH)); } else { _tempTableConfig.PrimaryIndex = EditorGUILayout.Popup(_tempTableConfig.PrimaryIndex, keys, GUILayout.Width(INFO_POPUP_WIDTH)); _tempTableConfig.PrimaryKey = keys[_tempTableConfig.PrimaryIndex]; for (int i = 0; i < _tempTableConfig.FieldList.Count; i++) { if (_tempTableConfig.FieldList[i].Name == _tempTableConfig.PrimaryKey) { _tempTableConfig.PrimaryType = _tempTableConfig.FieldList[i].FieldType; break; } } } //} GUILayout.FlexibleSpace(); if (GUILayout.Button("保存配置")) { WriteConfig(); } GUILayout.Space(10); GUILayout.EndHorizontal(); GUILayout.Space(5); ShowConfigInfo(); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); if (GUILayout.Button("生成脚本")) { GenerateCode(); } if (GUILayout.Button("另存脚本")) { _tempTableConfig.CodePath = ""; _tempTableConfig.DataPath = ""; GenerateCode(); } GUILayout.EndVertical(); GUILayout.EndArea(); GUILayout.EndVertical(); GUILayout.EndArea(); } }
private void OnDestroy() { _excelConfig.ColumnsWidth[_excelConfig.ColumnsWidth.Count - 1] = TableDatabaseUtils.TableConfigSerializeData.Setting.ColumnWidth; EditorUtility.SetDirty(_excelConfig); TableDatabaseUtils.SavaGlobalData(); }