游戏过程中计时
在玩家脚本(其实就是核心脚本)写下如下函数,并在Update函数中调用
只需一句话 UpdateTime();
该脚本通过计时,将获取的秒数传递给UI管理脚本
public void UpdateTime()
{
//游戏时间
gametime += Time.deltaTime;
//Debug.Log((int)gametime);
//改变UI时间
UIManager.instance.UpdateTimeBar((int)gametime);
//倒计时
//UpdateTimeBar((int)(maxtime-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; } }
定义属性
属性是一种类的成员,它的实现类似函数,访问类似字段
作用是提供一种灵活和安全的机制来访问、修改私有字段
属性必须依赖于字段属性拥有两个类似于函数的块,set 和 get ,set 设置属性的值,get 获取属性的值
private int myInt;public int MyInt
{
get{ return myInt * 3;}
set{ myInt = value / 3;}
}这两个块称为 访问器,可以用来控制属性的访问级别
可以忽略其中的一个块创建只读或只写属性 (没有set的属性是一种只读属性,没有get的访问器是一种只写属性)
注意:这里的只读和只写只适用于外部代码,类中的其他代码依旧能访问其中的数据
get访问器用来返回字段或者计算 并返回字段,它必须以return或者throw终结
set访问器类似返回类型为void的函数,使用value的隐式参数
注意: value 关键字表示用户提供的属性值,其类型和属性相同,所以如果属性和字段使用相同的类型,就不用类型转换。
原文链接:【c#】定义类成员(字段、方法、属性)_肖申克de九叔的博客-CSDN博客_c#定义字段
public int x {get;private set;}
是另一种简写。set前面的private声明是告诉编译器属性:X是只读(read-only)的。
意思是对于外部类不能通过属性X给x赋值,而只能读取其值。
附完整教程: