添加一个表格组件,原理上贴近现代表格系统,理论上可以应对超大型表格以及离散数据集合。
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4969d4a2ba6af0409896898d9854d05
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,12 @@
|
||||
// ==================================================
|
||||
// Xeric Style Sheet (XSSS) - 超级干燥样式表 - 默认样式
|
||||
// ==================================================
|
||||
|
||||
namespace: default
|
||||
|
||||
/button/TargetGraphic/ColorTint:UnityEngine.UI.ColorBlock/ {
|
||||
.NormalColor = (1,1,1,1)
|
||||
.HighlightedColor = (0.96,0.96,0.96,1)
|
||||
.PressedColor = (0.78,0.78,0.78,1)
|
||||
.DisabledColor = (0.78,0.78,0.78,0.5)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5b4cf6e97fa28b429cbb9088690bfc8
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 1693830282, guid: 65aae7f37e34be6409e0966d54c89b6d, type: 3}
|
||||
@@ -0,0 +1,24 @@
|
||||
namespace XericUI.Core.StyleSheetUI
|
||||
{
|
||||
/// <summary>
|
||||
/// UI 交互状态枚举——仿 Selectable.SelectionState(protected 无法外部引用)。
|
||||
/// 使用时通过 (StyleSheetSelectionState)(int)selectableState 转换。
|
||||
/// </summary>
|
||||
public enum StyleSheetSelectionState
|
||||
{
|
||||
/// <summary>正常状态</summary>
|
||||
Normal,
|
||||
|
||||
/// <summary>高亮(鼠标悬停)状态</summary>
|
||||
Highlighted,
|
||||
|
||||
/// <summary>按下状态</summary>
|
||||
Pressed,
|
||||
|
||||
/// <summary>选中状态</summary>
|
||||
Selected,
|
||||
|
||||
/// <summary>禁用状态</summary>
|
||||
Disabled,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c0ffbcf7800c40b45b11f9e9fdd88a97
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,116 @@
|
||||
using System;
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
using XericLibrary.Runtime.SuperStyleSheet;
|
||||
|
||||
namespace XericUI.Core.StyleSheetUI
|
||||
{
|
||||
/// <summary>
|
||||
/// 样式表驱动的 UI 交互状态块——仿 ColorBlock 设计。
|
||||
/// 集中管理 Normal/Highlighted/Pressed/Selected/Disabled 五种状态的 StyleField。
|
||||
/// 职责单一:仅保存一组样式属性(如仅颜色、或仅纹理)。
|
||||
/// 在组件上声明多个实例分别实现颜色切换和纹理切换。
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public class StyleSheetState
|
||||
{
|
||||
#region 序列化字段
|
||||
|
||||
[Header("五态样式路径")]
|
||||
[SerializeField]
|
||||
[Tooltip("正常状态")]
|
||||
private StyleField m_Normal = new StyleField();
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("高亮状态")]
|
||||
private StyleField m_Highlighted = new StyleField();
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("按下状态")]
|
||||
private StyleField m_Pressed = new StyleField();
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("选中状态")]
|
||||
private StyleField m_Selected = new StyleField();
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("禁用状态")]
|
||||
private StyleField m_Disabled = new StyleField();
|
||||
|
||||
[Header("过渡")]
|
||||
[SerializeField]
|
||||
[Range(0.001f, 1f)]
|
||||
[Tooltip("渐变持续时间")]
|
||||
private float m_FadeDuration = 0.1f;
|
||||
|
||||
#endregion
|
||||
|
||||
#region 公开属性
|
||||
|
||||
public StyleField Normal => m_Normal;
|
||||
public StyleField Highlighted => m_Highlighted;
|
||||
public StyleField Pressed => m_Pressed;
|
||||
public StyleField Selected => m_Selected;
|
||||
public StyleField Disabled => m_Disabled;
|
||||
|
||||
public float FadeDuration
|
||||
{
|
||||
get => m_FadeDuration;
|
||||
set => m_FadeDuration = value;
|
||||
}
|
||||
|
||||
/// <summary>所有 StyleField</summary>
|
||||
public StyleField[] AllFields => new[]
|
||||
{
|
||||
m_Normal, m_Highlighted, m_Pressed, m_Selected, m_Disabled
|
||||
};
|
||||
|
||||
/// <summary>默认实例</summary>
|
||||
public static StyleSheetState Default => new StyleSheetState();
|
||||
|
||||
#endregion
|
||||
|
||||
#region 查找
|
||||
|
||||
/// <summary>根据交互状态获取对应的 StyleField</summary>
|
||||
public StyleField GetForState(StyleSheetSelectionState state)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case StyleSheetSelectionState.Normal: return m_Normal;
|
||||
case StyleSheetSelectionState.Highlighted: return m_Highlighted;
|
||||
case StyleSheetSelectionState.Pressed: return m_Pressed;
|
||||
case StyleSheetSelectionState.Selected: return m_Selected;
|
||||
case StyleSheetSelectionState.Disabled: return m_Disabled;
|
||||
default: return m_Normal;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 注册 / 注销
|
||||
|
||||
public void RegisterAll()
|
||||
{
|
||||
foreach (var f in AllFields) f?.Register();
|
||||
}
|
||||
|
||||
public void UnregisterAll()
|
||||
{
|
||||
foreach (var f in AllFields) f?.Unregister();
|
||||
}
|
||||
|
||||
public void SubscribeAll(Action<StyleValue> callback)
|
||||
{
|
||||
foreach (var f in AllFields) { if (f != null) f.OnValueChanged += callback; }
|
||||
}
|
||||
|
||||
public void UnsubscribeAll(Action<StyleValue> callback)
|
||||
{
|
||||
foreach (var f in AllFields) { if (f != null) f.OnValueChanged -= callback; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f8a47a476054d142a8987d093216e74
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user