using UnityEngine; namespace XericUI.XTable.Core { /// /// 表格系统全局配置资源——统一管理布局、样式回退值、运行时颜色等参数。 /// 表格组件在 Awake 时自动加载 Resources 中的 "XTableDefaultConfig", /// 或由外部脚本在初始化阶段显式赋值。 /// [CreateAssetMenu(fileName = "XTableConfig", menuName = "Xeric Library/Table/Table Config", order = 100)] public class XTableConfig : ScriptableObject { #region 布局 [Header("布局")] [Tooltip("新增行时的默认行高(像素)")] public float DefaultRowHeight = 40f; [Tooltip("新增列时的默认列宽(像素)")] public float DefaultColumnWidth = 100f; [Tooltip("单元格内容水平内边距(左右各此值)")] public float CellHorizontalPadding = 4f; #endregion #region 四叉树 [Header("四叉树")] [Tooltip("单节点最大单元格数,超过此值强制空间分裂以提升可见性裁剪效率")] public int QuadtreeMaxCellsPerNode = 64; #endregion #region 对象池 [Header("对象池")] [Min(1)] [Tooltip("文本池允许创建的对象总上限")] public int TextPoolMaxCapacity = 256; [Min(1)] [Tooltip("图片池允许创建的对象总上限")] public int ImagePoolMaxCapacity = 256; [Min(1)] [Tooltip("预制体池允许创建的实例总上限")] public int PrefabPoolMaxCapacity = 256; [Min(1)] [Tooltip("文本池 cellId 路由桶数量")] public int TextPoolRouteBucketCount = 256; [Min(1)] [Tooltip("图片池 cellId 路由桶数量")] public int ImagePoolRouteBucketCount = 256; #endregion #region 样式回退值 [Header("样式回退值(当 StyleManager 中查不到时使用)")] [Tooltip("默认样式命名空间")] public string DefaultStyleNamespace = "xeric_table_default"; [Tooltip("单元格背景色")] public Color BgColor = new Color(0.18f, 0.18f, 0.18f, 1f); [Tooltip("单元格前景色(文字颜色)")] public Color FgColor = new Color(0.05f, 0.05f, 0.05f); [Tooltip("编辑器选中色")] public Color SelectionColor = new Color(0.2f, 0.5f, 1f, 0.3f); [Tooltip("边框颜色")] public Color BorderColor = new Color(0.35f, 0.35f, 0.35f, 0.5f); [Tooltip("边框宽度")] public float BorderWidth = 1f; [Tooltip("字体大小")] public int FontSize = 14; #endregion #region 运行时颜色 [Header("运行时选中/边框颜色")] [Tooltip("运行时单选高亮")] public Color RuntimeSelectionColor = new Color(0.18f, 0.42f, 0.82f, 0.25f); [Tooltip("运行时多选高亮")] public Color RuntimeMultiSelectColor = new Color(0.18f, 0.42f, 0.82f, 0.12f); [Tooltip("运行时焦点高亮(当前选中格)")] public Color RuntimeFocusColor = new Color(0.22f, 0.55f, 0.95f, 0.35f); [Tooltip("运行时边框色")] public Color RuntimeBorderColor = new Color(0.35f, 0.35f, 0.35f, 0.5f); [Tooltip("运行时边框宽度")] public float RuntimeBorderWidth = 1f; #endregion #region 编辑器多选颜色因子 [Header("编辑器多选/焦点颜色因子(基于 SelectionColor 计算)")] [Tooltip("多选透明因子")] [Range(0, 1)] public float MultiSelectAlphaFactor = 0.4f; [Tooltip("焦点色 R 增量")] [Range(0, 0.5f)] public float FocusRAdd = 0.04f; [Tooltip("焦点色 G 增量")] [Range(0, 0.5f)] public float FocusGAdd = 0.13f; [Tooltip("焦点色 B 增量")] [Range(0, 0.5f)] public float FocusBAdd = 0.13f; [Tooltip("焦点色 Alpha 倍数")] [Range(0.1f, 3f)] public float FocusAlphaMul = 1.4f; #endregion #region 资源路径 /// Resources 目录下的默认配置文件名(不含扩展名) public const string DEFAULT_RESOURCE_PATH = "XTableDefaultConfig"; /// 从 Resources 加载默认配置,若失败则返回 ScriptableObject.CreateInstance 的默认值 public static XTableConfig LoadOrDefault() { var cfg = Resources.Load(DEFAULT_RESOURCE_PATH); if (cfg != null) return cfg; return CreateInstance(); } #endregion } }