游戏过程中计时
在玩家脚本(其实就是核心脚本)写下如下函数,并在Update函数中调用
只需一句话 UpdateTime();
该脚本通过计时,将获取的秒数传递给UI管理脚本
public void UpdateTime()
{
//游戏时间
gametime += Time.deltaTime;
//Debug.Log((int)gametime);
//改变UI时间
UIManager.instance.UpdateTimeBar((int)gametime);
}
刷新UI时间(UI管理脚本)
必须完整包含以下内容
//定义一个单例,外部可以方便地访问到这个定义的instance对象
public static UIManager instance { get; private set; }
private void Awake()
{
instance = this;
}
//以上代码不知道为什么这么写,但是必须要有
//刷新时间
public void UpdateTimeBar(int curtime)
{
int min = curtime / 60;
int sec = curtime % 60;
if (sec < 10 && min<10)
{
TimeBar.text = "0"+min.ToString() + ":0" + sec.ToString();
}
if (sec > 10 && min < 10)
{
TimeBar.text = "0" + min.ToString() + ":" + sec.ToString();
}
}
核心代码分析
UI管理脚本从玩家脚本接收其获取的秒数,将这个数值以00:00的格式显示出来
求分钟数:秒数/60
求剩余秒数(sec < 60):对秒数取60的模
分钟格式处理:不足10的补0
秒数格式处理:不足10的补0
//刷新时间
public void UpdateTimeBar(int curtime)
{
int min = curtime / 60;
int sec = curtime % 60;
if (sec < 10 && min<10)
{
TimeBar.text = "0"+min.ToString() + ":0" + sec.ToString();
}
if (sec > 10 && min < 10)
{
TimeBar.text = "0" + min.ToString() + ":" + sec.ToString();
}
}
相关知识
public int x {get;private set;} 是什么意思
这个C#属性:
public int X {get;set;}
是其简写:
private int x; //编译器创建的一个私有的zhi匿名支持字段dao public int X { get { return this.x; } set { this.x = value; } }
public int x {get;private set;}
是另一种简写。set前面的private声明是告诉编译器属性:X是只读(read-only)的。
意思是对于外部类不能通过属性X给x赋值,而只能读取其值。
附完整教程:
原博地址
https://blog.csdn.net/weixin_43673589