如何获取规范化值以更改 Unity 中的 UI 文本元素
本文关键字:Unity 中的 UI 元素 文本 何获取 获取 规范化 | 更新日期: 2023-09-27 18:33:32
我有一个来自动画当前位置的规范化值。如何根据string
中的值将其转换为文本输出?
例如
if (animation.Time < 0.1)
{
text = January;
}
else (0.1 < animation.Time < 0.2)
{
text = February;
}
等等,一直到 1,因为归一化值。
我意识到这段代码根本不起作用,但我认为这是让它工作所需的逻辑,但到目前为止我没有运气。
编辑,详细阐述的问题。我有一个滑块,它根据动画的进展而移动,它通过将 animationTime 转换为规范化值来实现这一点,以便滑块相对于动画填充。
我想取这个规范化时间的值来在屏幕上显示动画的当前相关日期,因此,如果动画显示年份进度,随着滑块向上移动,规范化值也是如此,我可以有一些文本将以月为单位计数。
我希望这现在更有意义。
要在 Unity 中获取"月份字符串",只需这样做...
假设你有"3"..
string monthString = new System.DateTime(1,3,1).ToString("MMMM");
Debug.Log("Teste " + monthString );
结果,"三月"。
所以让自己成为一个函数
private string MonthFromInt(int m)
{
string monthString = new System.DateTime(1, m ,1).ToString("MMMM");
return monthString;
}
然后使用它。
<小时 />关于您需要的控制结构。 你提到它是"在两个值之间"。要做到这一点,你只需要
if ( 0.00f < t && t <= 0.23f ) do something here...
我建议KISS只做以下几件事。只需填写值:
float t = animation.time (or whatever)
string text = "?";
if ( 0.00f <= t && t <= 0.23f ) text = MonthFromInt(0);
if ( 0.23f < t && t <= 0.41f ) text = MonthFromInt(1);
if ( 0.41f < t && t <= 0.66f ) text = MonthFromInt(2);
if ( 0.66f < t && t <= 0.68f ) text = MonthFromInt(3);
... etc ...
if ( 0.91f < t && t <= 1.00f ) text = MonthFromInt(11);
使用"<",然后使用"<=",如上所述。 希望对您有所帮助!