1、Time类中的常用属性
属性名 | 类型 | 属性类型 | 含义 |
time | float | get | 游戏开始之后开始计时,以秒为单位 |
deltaTime | float | get; | 上一次调用Update方法或者FixedUpdate方法所用的时间。 |
timeScale | float | get;set | 游戏运行的快慢,当设置其值为1时,游戏正常运行;当设置其值为0时,游戏暂停;当设置其值为0-1中的数时,游戏运行变慢;当设置其值大于1时,游戏运行变快。 |
注:Update方法是每帧调用一次。
2、经验总结
1、用按钮来控制游戏的暂停和结束
(1)、用两个按钮来控制游戏的暂停和播放
void OnGUI()
{
//OnGUI画按钮,前两个参数为起始位置,以屏幕左上角为0,0点
//后边两个参数为按钮的一个宽和高,最后一个参数为按钮的名字
if (GUI.Button(newRect(50,50,100,50),"暂停"))
{
//0为时间暂停
Time.timeScale = 0;
}
//大于0并且小于1可以模拟慢动作
//大于1可以模拟快动作
if (GUI.Button(new Rect(150, 50, 100,50), "播放"))
{
//1为正常播放
Time.timeScale = 1;
}
}
(2)、用一个按钮来控制游戏的暂停和播放
其中又分为通过控制次数和通过控制布尔值来实现:
通过控制次数来控制:
//定义一个静态的int类型来计数
static int count=0;
void OnGUI()
{
//通过控制次数的奇偶来控制游戏暂停或者开始
if (GUI.Button(new Rect(250, 50, 100,50), "暂停/开始"))
{
count++;
if (count%2==1)
{
Time.timeScale = 0;
}
if (count % 2 == 0)
{
Time.timeScale = 1;
}
}
通过控制布尔值来控制:
//定义一个布尔值类型的变量
bool isPlay=true;
void OnGUI()
{
//通过控制布尔值来控制游戏暂停或者开始
if (GUI.Button(new Rect(250, 50, 100, 50),"暂停/开始"))
{
//改变为相反的状态
isPlay = !isPlay;
if (isPlay)
{
Time.timeScale = 1;
}
else
{
Time.timeScale = 0;
}
}
}
1、 做一个计时器,如下图所示:
public class CumulativeTime :MonoBehaviour
{
//游戏运行时间
float totalTime_delta;
//小时,分钟,秒数
int hour, min, sec;
//对应的字符串形式变量
string hour_s, min_s, sec_s;
//临时记录我们运行时间的变量
float time_temp;
void Update()
{
time_temp += Time.deltaTime;
//大于1s,秒数++,时间清零
if (time_temp > 1)
{
sec++;
time_temp = 0;
}
//秒数大于60,分钟++,秒清零
if (sec > 59)
{
min++;
sec = 0;
}
//分钟大于60,小时++,分钟清零
if (min > 59)
{
hour++;
min = 0;
}
//假如秒数小于10,在其前面加一个字符串0
if (sec < 10)
{
sec_s = 0 + sec.ToString();
}
else
{
sec_s = sec.ToString();
}
if (hour < 10)
{
hour_s = 0 + hour.ToString();
}
else
{
hour_s = hour.ToString();
}
//对应字符串的三个形式(小于10和大于等于10的情况)
if (min < 10)
{
min_s = 0 + min.ToString();
}
else
{
min_s = min.ToString();
}
//字符串的拼接
//在3D文字中显示
this.GetComponent<TextMesh>().text = hour_s + ":" +min_s + ":" + sec_s;
}