Unity2d 游戏计时

游戏过程中计时

在玩家脚本(其实就是核心脚本)写下如下函数,并在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赋值,而只能读取其值。

附完整教程:

Unity2d Rubys Adventure 课程设计报告

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值