Gameplay Ingredients是一组用于 Unity 游戏的运行时和编辑器工具:一组脚本的集合,可在制作游戏和原型时简化简单的任务。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

70 行
1.9 KiB

using UnityEngine;
using UnityEngine.UI;
using NaughtyAttributes;
using GameplayIngredients.Rigs;
namespace GameplayIngredients
{
[AddComponentMenu(ComponentMenu.timerPath + "Timer Display Rig")]
[HelpURL(Help.URL + "timers")]
public class TimerDisplayRig : Rig
{
[NonNullCheck]
public Text text;
[NonNullCheck]
public TextMesh textMesh;
[NonNullCheck]
public Timer timer;
[InfoBox("Use the following wildcards:\n - %h : hours\n - %m : minutes\n - %s : seconds\n - %x : milliseconds", EInfoBoxType.Normal)]
public string format = "%h:%m:%s:%x";
public override UpdateMode defaultUpdateMode => UpdateMode.Update;
public override int defaultPriority => 0;
private void OnValidate()
{
UpdateText();
}
private void Reset()
{
UpdateText();
}
public override void UpdateRig(float deltaTime)
{
if (timer == null || (text == null && textMesh == null))
return;
UpdateText();
}
void UpdateText()
{
var value = format;
uint hours = timer != null ? timer.CurrentHours: 0;
uint minutes = timer != null ? timer.CurrentMinutes : 0;
uint seconds = timer != null ? timer.CurrentSeconds : 0;
uint milliseconds = timer != null ? timer.CurrentMilliseconds : 0;
value = value.Replace("%h", hours.ToString("D2"));
value = value.Replace("%m", minutes.ToString("D2"));
value = value.Replace("%s", seconds.ToString("D2"));
value = value.Replace("%x", milliseconds.ToString("D3"));
if (text != null)
text.text = value;
if (textMesh != null)
textMesh.text = value;
}
}
}