本人Unity版本为2019.1.8f1,尽量使用同样版本。
扩展的内容是:插件中的2D表格Graph的横轴和纵轴的坐标值,希望可以按周、百分比、小时等来展示
1.将脚本AxisFormat中的内容修改为如下内容
public enum AxisFormat
{
/// <summary>
/// 浮点类型数值
/// </summary>
Number,
/// <summary>
/// 12:12:36 这样
/// </summary>
Time,
/// <summary>
/// 2020/7/22 这样
/// </summary>
Date,
/// <summary>
/// 2020/7/22 00:00 这样子展示
/// </summary>
DateTime,
/// <summary>
/// 星期一 这样子展示
/// </summary>
WeekMode,
/// <summary>
/// 30% 这样子展示
/// </summary>
PerscentMode,
/// <summary>
/// 7:00 这样子展示
/// </summary>
HourMode,
}
2.需要自己扩展ChartAdancedSettings,直接复制粘贴覆盖即可,脚本内容如下
[Serializable]
class ChartAdancedSettings
{
private static ChartAdancedSettings mInstance;
public static ChartAdancedSettings Instance
{
get
{
if (mInstance == null)
mInstance = new ChartAdancedSettings();
return mInstance;
}
}
private static string[] FractionDigits = new string[]
{
"{0:0}",
"{0:0.#}",
"{0:0.##}",
"{0:0.###}",
"{0:0.####}",
"{0:0.#####}",
"{0:0.######}",
"{0:0.#######}",
};
[Range(0, 7)]
public int ValueFractionDigits = 2;
[Range(0, 7)]
public int AxisFractionDigits = 2;
private string InnerFormat(string format,double val)
{
try
{
return string.Format(format, val);
}
catch
{
}
return " ";
}
string getFormat(int value)
{
value = Mathf.Clamp(value, 0, 7);
return FractionDigits[value];
}
public string FormatFractionDigits(int digits, double val, string format = null)
{
if (String.IsNullOrEmpty(format))
return InnerFormat(getFormat(digits), val);
return InnerFormat(format, val);
}
string getWeekFormat(int value)
{
switch (value)
{
case 1:
return "周一";
case 2:
return "周二";
case 3:
return "周三";
case 4:
return "周四";
case 5:
return "周五";
case 6:
return "周六";
case 7:
return "周日";
default:
return " ";
}
}
//public string FormatFractionDigits(int digits, double val)
//{
// return InnerFormat(getFormat(digits), val);
//}
public string FormatFractionWeeks(int digits)
{
return getWeekFormat(digits);
}
public string FormatFractionPerscent(int digits, double val)
{
return (InnerFormat(getFormat(digits), val) + "%");
}
public string FormatFractionHourMode(int digits, double val)
{
return (InnerFormat(getFormat(digits), val) + ":00");
}
}
3.需要自己扩展ScrollableAxisChart脚本中的函数StringFromAxisFormat,将其修改为以下内容
protected string StringFromAxisFormat(DoubleVector3 val, AxisBase axis, int fractionDigits,bool isX)
{
val.z = 0;
double itemVal = isX ? val.x : val.y;
var dic = VectorValueToStringMap;
KeyValuePair<string,string> res;
// Debug.Log("try get " + val + " count is " + dic.Count);
if (dic.TryGetValue(val, out res))
{
if (isX && res.Key != null)
return res.Key;
if (isX == false && res.Value != null)
return res.Value;
}
if (axis == null)
return ChartAdancedSettings.Instance.FormatFractionDigits(fractionDigits, itemVal, CustomNumberFormat);
string toSet = "";
if (axis.Format == AxisFormat.Number)
toSet = ChartAdancedSettings.Instance.FormatFractionDigits(fractionDigits, itemVal, CustomNumberFormat);
else
{
DateTime date = ChartDateUtility.ValueToDate(itemVal);
if (axis.Format == AxisFormat.DateTime)
toSet = ChartDateUtility.DateToDateTimeString(date,CustomDateTimeFormat);
else if (axis.Format == AxisFormat.WeekMode)
{
toSet = ChartAdancedSettings.Instance.FormatFractionWeeks(int.Parse(ChartAdancedSettings.Instance.FormatFractionDigits(fractionDigits, itemVal)));
}
else if (axis.Format == AxisFormat.PerscentMode)
{
toSet = ChartAdancedSettings.Instance.FormatFractionPerscent(fractionDigits, itemVal);
}
else if (axis.Format == AxisFormat.HourMode)
{
toSet = ChartAdancedSettings.Instance.FormatFractionHourMode(fractionDigits, itemVal);
}
else
{
//DateTime date = ChartDateUtility.ValueToDate(itemVal);
if (axis.Format == AxisFormat.DateTime)
toSet = ChartDateUtility.DateToDateTimeString(date, toSet);
else
{
if (axis.Format == AxisFormat.Date)
toSet = ChartDateUtility.DateToDateString(date);
else
toSet = ChartDateUtility.DateToTimeString(date);
}
//if (axis.Format == AxisFormat.Date)
// toSet = ChartDateUtility.DateToDateString(date);
//else
// toSet = ChartDateUtility.DateToTimeString(date);
}
}
return toSet;
}
4.脚本修改完成后,回到场景面板

这个时候,就可以进行格式的调整了。
本文详细介绍如何在Unity中自定义图表的轴格式,包括时间、日期、百分比等多种显示方式,通过修改脚本实现更灵活的数据展示。
2546

被折叠的 条评论
为什么被折叠?



