UI对象

效果

血量显示 时间显示

子弹显示

敌人数显示

核心代码

位于UIManager.cs脚本

   //更新血条
    public void UpdateHealthBar(int curAmount,int maxAmount)
    {
        healthBar.fillAmount = (float)curAmount / (float)maxAmount;
    }
    //更新子弹
    public void UpdateBulletCount(int curAmount,int maxAmount)
    {
        bulletCountText.text = curAmount.ToString()+"/"+maxAmount.ToString();
    }

    //刷新时间
    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 void UpdateEnemyLeft(int enemyleft)
    {
        EnemyLeftBar.text = enemyleft.ToString();
    }

必备配套代码

    public static UIManager instance { get; private set; }

    private void Awake()
    {
        instance = this;
    }

玩家脚本调用代码

   public void changeHealth(int amount)
    {
        //可能是受到伤害,也可能是加血
        if(amount<0)
        {
            //如果是受伤,设置无敌状态,则2秒内不能受伤
            if(isWudi==true)
            {
                return;
            }
            isWudi = true;
            //播放受伤动画
            anim.SetTrigger("Hit");
            //播放受伤音效
            AudioManager.instance.AudioPlay(hitClip);
            //为无敌计时器赋值
            wuditimer = wuditime;
        }
        //更改健康值
        currentHealth = Mathf.Clamp(currentHealth+amount,0,maxHealth);
        //更新血条
        UIManager.instance.UpdateHealthBar(currentHealth, maxHealth);
        //调试
        Debug.Log(currentHealth + "/" + maxHealth);
    }

    public void ChangeBulletCount(int amount)
    {
        //改变子弹数
        curBulletCount = Mathf.Clamp(curBulletCount + amount, 0, maxBulletCount);
        //改变UI子弹数
        UIManager.instance.UpdateBulletCount(curBulletCount, maxBulletCount);
    }

    public void UpdateTime()
    {
        //游戏时间
        gametime += Time.deltaTime;
        //Debug.Log((int)gametime);

        //改变UI时间
        UIManager.instance.UpdateTimeBar((int)gametime);
    }

    public void UpdateEnemyLeft()
    {
        UIManager.instance.UpdateEnemyLeft(enemyleft);
    }

附完整教程:

Unity2d Rubys Adventure 课程设计报告

posted on 2020-06-11 01:01  海月CSDN  阅读(467)  评论(0编辑  收藏  举报