时间和图片结合代码。显示结果为分和秒。
public int minite;//分
public int second;//秒
public float AllTime;//总时间
int ChangeTime;//改变时间
public Sprite[] Timer;//存放数字图片数组
public GameObject[] Ti;//存放Ui
public int FindNum(int num, int n)
{
int power = (int)Math.Pow(10, n);
return (num - num / power * power) * 10 / power;
}
void Update () {
AllTime -= Time.deltaTime;
minite = (int)AllTime / 60;
second = (int)AllTime % 60;
if(second>=0&&second<60)
{
Ti[0].GetComponent<Image>().sprite = Timer[FindNum(second, 1)];
}
if (second >= 0 && second < 60)
{
Ti[1].GetComponent<Image>().sprite = Timer[FindNum(second, 2)];
}
if(minite>=0&& minite < 10)
{
Ti[2].GetComponent<Image>().sprite = Timer[FindNum(minite, 1)];
}
if (minite >= 10 && minite < 60)
{
Ti[3].GetComponent<Image>().sprite = Timer[FindNum(minite, 2)];
}
if(AllTime<=40&& music)
{
BG.GetComponent<AudioSource>().clip = BgHigh;
BG.GetComponent<AudioSource>().Play();
music = false;
}
}
分数滚动实现
public Sprite[] score;//存放数字图片
static public int Score1; //当前分数
static public int NowScore;//更新分数
float ChangeTime;//变化时间变量
public GameObject[] Sco;//分数存放数组UI
float timeKeep = 0.1f;//滚动时间
void Start()
{
Score1 =0;
NowScore = 0;
ChangeTime = 0;
}
void Update()
{
if (Score1 < 0)
{
Score1 = 0;
}
if (NowScore != Score1)
{
ChangeTime += Time.deltaTime;
if (ChangeTime > timeKeep)
{
if (NowScore < Score1)
{
NowScore++;
}
if (NowScore > Score1)
{
NowScore--;
}
ChangeScore(NowScore);
ChangeTime = 0;
int dis = Math.Abs(NowScore - Score1);
timeKeep = 0.01f / (float)(dis % 10 + 1);//分数滚动时间间隔
}
}
public void ChangeScore(int Number)
{
char[] chars = Number.ToString().ToCharArray();//存放分数数组
for (int i = 0; i < chars.Length; i++)
{
int index = int.Parse(chars[chars.Length - i - 1].ToString());//得到变化数字下标
Sco[i].GetComponent<Image>().sprite = score[index];//得到分数图片
}
for (int i = 0; i < Sco.Length- chars.Length; i++)
{
Sco[Sco.Length-1-i].GetComponent<Image>().sprite = score[0];改变分数
}
}