增加Commentlayer设置层级

This commit is contained in:
monitor1394
2025-03-22 09:24:46 +08:00
parent 8bc66ca30a
commit 9e07617cc4
6 changed files with 48 additions and 6 deletions

View File

@@ -80,6 +80,8 @@ slug: /changelog
## master
* (2025.03.22) 增加`Comment``layer`设置层级
* (2025.03.21) 优化`Comment`的坐标刷新
* (2025.03.19) 增加`Serie``Label``formatter`支持`{index}`通配符
* (2025.03.18) 增加`Bar`可添加`TitleStyle`组件支持
* (2025.03.18) 增加`LabelStyle``fixedX``fixedY`可固定label的坐标

View File

@@ -9,6 +9,7 @@ namespace XCharts.Editor
public override void OnInspectorGUI()
{
++EditorGUI.indentLevel;
PropertyField("m_Layer");
PropertyField("m_LabelStyle");
//PropertyField("m_MarkStyle");
PropertyListField("m_Items", true);

View File

@@ -5,14 +5,33 @@ using UnityEngine;
namespace XCharts.Runtime
{
/// <summary>
/// comment of chart.
/// ||图表注解组件
/// The layer of comment.
/// ||注解的显示层级
/// </summary>
[Since("v3.15.0")]
public enum CommentLayer
{
/// <summary>
/// The comment is display under the serie.
/// ||注解在系列下方。
/// </summary>
Lower,
/// <summary>
/// The comment is display above the serie.
/// ||注解在系列上方。
/// </summary>
Upper
}
/// <summary>
/// comment of chart. Used to annotate special information in the chart.
/// ||图表注解组件。用于标注图表中的特殊信息。
/// </summary>
[Serializable]
[ComponentHandler(typeof(CommentHander), true)]
public class Comment : MainComponent, IPropertyChanged
{
[SerializeField] private bool m_Show = true;
[SerializeField][Since("v3.15.0")] private CommentLayer m_Layer = CommentLayer.Lower;
[SerializeField] private LabelStyle m_LabelStyle = new LabelStyle();
[SerializeField] private CommentMarkStyle m_MarkStyle;
[SerializeField] private List<CommentItem> m_Items = new List<CommentItem>() { new CommentItem() };
@@ -23,6 +42,11 @@ namespace XCharts.Runtime
/// </summary>
public bool show { get { return m_Show; } set { if (PropertyUtil.SetStruct(ref m_Show, value)) SetComponentDirty(); } }
/// <summary>
/// The layer of comment.
/// ||注解的显示层级。
/// </summary>
public CommentLayer layer { get { return m_Layer; } set { if (PropertyUtil.SetStruct(ref m_Layer, value)) SetComponentDirty(); } }
/// <summary>
/// The items of comment.
/// ||注解项。每个注解组件可以设置多个注解项。
/// </summary>
@@ -45,7 +69,12 @@ namespace XCharts.Runtime
get { return m_MarkStyle; }
set { if (PropertyUtil.SetClass(ref m_MarkStyle, value)) SetVerticesDirty(); }
}
/// <summary>
/// Get the label style of comment item.
/// ||获取注解项的文本样式。
/// </summary>
/// <param name="index">the index of item</param>
/// <returns></returns>
public LabelStyle GetLabelStyle(int index)
{
if (index >= 0 && index < items.Count)
@@ -55,7 +84,12 @@ namespace XCharts.Runtime
}
return m_LabelStyle;
}
/// <summary>
/// Get the mark style of comment item.
/// ||获取注解项的标记样式。
/// </summary>
/// <param name="index">the index of item</param>
/// <returns></returns>
public CommentMarkStyle GetMarkStyle(int index)
{
if (index >= 0 && index < items.Count)

View File

@@ -23,8 +23,12 @@ namespace XCharts.Runtime
chart.chartMaxAnchor,
chart.chartPivot,
chart.chartSizeDelta, -1, chart.childrenNodeNames);
var siblingIndex = comment.layer == CommentLayer.Upper
? chart.topPainter.transform.GetSiblingIndex() - 1
: chart.painter.transform.GetSiblingIndex() + 1;
commentObj.SetActive(comment.show);
commentObj.transform.SetSiblingIndex(siblingIndex);
commentObj.hideFlags = chart.chartHideFlags;
ChartHelper.HideAllObject(commentObj);
for (int i = 0; i < comment.items.Count; i++)

View File

@@ -11,11 +11,11 @@ namespace XCharts.Runtime
public class CommentItem : ChildComponent
{
[SerializeField] private bool m_Show = true;
[SerializeField] private string m_Content = "comment";
[SerializeField] private string m_Content = "xcharts";
[SerializeField] private Rect m_MarkRect;
[SerializeField] private CommentMarkStyle m_MarkStyle = new CommentMarkStyle() { show = false };
[SerializeField] private LabelStyle m_LabelStyle = new LabelStyle() { show = false };
[SerializeField][Since("v3.5.0")] private Location m_Location = new Location() { align = Location.Align.TopLeft, top = 0.125f };
[SerializeField][Since("v3.5.0")] private Location m_Location = new Location() { align = Location.Align.BottomRight, right = 0.1f, bottom = 0.05f };
public ChartLabel labelObject { get; set; }

View File

@@ -69,6 +69,7 @@ namespace XCharts.Runtime
/// </summary>
public Vector3 chartPosition { get { return m_ChartPosition; } }
public Rect chartRect { get { return m_ChartRect; } }
public Painter topPainter { get { return m_PainterTop; } }
/// <summary>
/// The callback function of chart init.
/// ||图表的初始化完成回调。