/// <summary> /// 绘制字段信息 /// </summary> /// <param name="temp"></param> private void DrawTableConfigFieldInfo(TableConfigFieldInfo temp) { Type type = DataConfigUtils.ConfigFieldValueType2Type(temp.fieldValueType, temp.enumType); if (temp.defultValue == null || type.FullName != temp.defultValue.GetType().FullName) { temp.defultValue = ReflectionUtils.CreateDefultInstance(type); } //是否使用多语言字段 GUILayout.BeginVertical("box"); GUILayout.EndVertical(); temp = (TableConfigFieldInfo)EditorDrawGUIUtil.DrawClassData("字段信息", temp, new List <string>() { "defultValue", "enumType" }, null, () => { if (temp.fieldAssetType == DataFieldAssetType.LocalizedLanguage || temp.fieldAssetType == DataFieldAssetType.Prefab || temp.fieldAssetType == DataFieldAssetType.TableKey || temp.fieldAssetType == DataFieldAssetType.Texture) { if (type != typeof(string)) { temp.fieldAssetType = DataFieldAssetType.Data; } } string text = "默认值"; if (temp.fieldAssetType == DataFieldAssetType.LocalizedLanguage) { temp.defultValue = DrawLocalizedLanguageField(text, temp.defultValue); } else if (temp.fieldAssetType == DataFieldAssetType.Prefab) { temp.defultValue = DrawPrefabGUI(text, temp.defultValue); } else if (temp.fieldAssetType == DataFieldAssetType.Texture) { temp.defultValue = DrawTextureGUI(text, temp.defultValue); } else if (temp.fieldAssetType == DataFieldAssetType.TableKey) { temp.defultValue = DrawTableGUI(text, temp.defultValue); } else { temp.defultValue = EditorDrawGUIUtil.DrawBaseValue(text, temp.defultValue); } if (temp.fieldValueType == FieldType.Enum) { List <string> enumList = new List <string>(EditorTool.GetAllEnumType()); temp.enumType = EditorDrawGUIUtil.DrawPopup("枚举类型", temp.enumType, enumList); } }); }
private string GetDefaultValue(FieldType fieldValueType, string enumType, string field) { string defaultValue; if (!m_currentData.m_defaultValue.TryGetValue(field, out defaultValue)) { Type t = DataConfigUtils.ConfigFieldValueType2Type(fieldValueType, enumType); object obj = ReflectionUtils.CreateDefultInstance(t); defaultValue = DataConfigUtils.ObjectValue2TableString(obj); m_currentData.m_defaultValue.Add(field, defaultValue); } return(defaultValue); }
/// <summary> /// 绘制每个数据格子 /// </summary> /// <param name="startPos"></param> private void DrawGridItem(Vector2 startPos) { helpBoxStyle.fontSize = nowButtonFontSize; float tempHeight = 0; for (int i = 0; i < heightItemList.Count; i++) { float h = heightItemList[i]; float tempWith = 0; for (int j = 0; j < withItemList.Count; j++) { float w = withItemList[j]; Vector2 size = new Vector2(w, h); Vector2 pos = startPos + new Vector2(tempWith, tempHeight); object value = null; string showStr = ""; string field = m_currentData.TableKeys[j]; FieldType fieldValueType = GetFieldType(j, field); string enumType = GetEnumType(fieldValueType, field); string defaultValue = GetDefaultValue(fieldValueType, enumType, field); if (i == 0) { GUI.color = Color.yellow; showStr = EditorDrawGUIUtil.GetFormatName(field, DataConfigUtils.ConfigFieldValueType2Type(fieldValueType, enumType), "red"); } else if (i == 1) { GUI.color = Color.cyan; showStr = GetDescription(field); } else if (i == 2) { GUI.color = Color.green; showStr = defaultValue; } else { SingleData data = m_currentData[m_currentData.TableIDs[i - 3]]; bool isDefault = false; if (data.ContainsKey(field) && data[field] != defaultValue) { DataFieldAssetType fieldAssetType = GetDataFieldAssetType(field); if (fieldAssetType == DataFieldAssetType.LocalizedLanguage) { string k = data[field]; if (LanguageManager.HaveKey(k)) { showStr = LanguageManager.GetContentByKey(k); } else { showStr = k; } } else { showStr = data[field]; } } else { showStr = defaultValue; isDefault = true; } if (!string.IsNullOrEmpty(searchValue)) { showStr = ShowContainsChar(showStr, searchValue); } if (isDefault) { showStr = "<color=green>" + showStr + "</color>"; } } if (i == 1 || i == 2) { GUI.Button(new Rect(pos, size), showStr, helpBoxStyle); } else { if (selectColumnIndexs.Contains(j)) { GUI.color = Color.magenta; } if (selectRowIndexs.Contains(i)) { GUI.color = Color.cyan; } if (GUI.Button(new Rect(pos, size), showStr, helpBoxStyle)) { modifiIndex = new Vector2Int(i - 2, j); if (i == 0) { TableConfigFieldInfo f = new TableConfigFieldInfo(); f.fieldName = field; f.description = m_currentData.m_noteValue.ContainsKey(field) ? m_currentData.m_noteValue[field] : ""; f.fieldValueType = fieldValueType; f.defultValue = DataConfigUtils.TableString2ObjectValue(defaultValue, fieldValueType, enumType); f.enumType = enumType; f.fieldAssetType = GetDataFieldAssetType(field); value = f; } else { SingleData data = m_currentData[m_currentData.TableIDs[i - 3]]; if (data.ContainsKey(field)) { defaultValue = data[field]; } value = DataConfigUtils.TableString2ObjectValue(defaultValue, fieldValueType, enumType); } GeneralDataModificationWindow.OpenWindow(this, "修改数据", value, DrawModifiValueGUI, CheckModifiValueCallBack, ModificationCompleteCallBack); } } GUI.color = Color.white; tempWith += w; } tempHeight += h; } helpBoxStyle.fontSize = oldButtonFontSize; }