血条蓝条加减的实现

如何实现WASD键控制血条蓝条的加减、血量的加减?代码不难理解,空闲时整理了出来,时间仓促,有需要的小伙伴可自行下载。吐舌头

血条、蓝条:AD控制血条是否满格、WS控制蓝条的大小

 

using UnityEngine.UI;

public class MPCtrl : MonoBehaviour {

    //血条最大值

    public float hpMax = 1000;

    //蓝条最大值

    public float mpMax = 500;

    //血条蓝条增减速度

    public float speed=3f;

    //血条

    private RectTransform hpTra;

    //蓝条

    private RectTransform mpTra;

    //血条文本

    private Text hpText;

    //蓝条文本

    private Text mpText;

    // Use this for initialization

    //横纵轴

    private float h, v;

    //血条图片宽度

    private float hpWidth;

    //蓝条图片宽度

    private float mpWidth;

void Start () {

        //获取血条内容

        hpTra = transform.Find("HPImage/BackgroundImage")as RectTransform;

        //hpText = hpTra.GetChild(0).GetComponent<Text>();

        hpText = transform.Find("HPImage/BackgroundImage/Text").GetComponent<Text>();

        //获取蓝条内容

        mpTra = transform.Find("MPImage/BackgroundImage") as RectTransform;

        mpText = transform.Find("MPImage/BackgroundImage/Text").GetComponent<Text>();

        //获取血条蓝条图片宽度

        hpWidth = hpTra.rect.width;

        mpWidth = mpTra.rect.width;

    }

// Update is called once per frame

void Update () {

        //获取两轴

        h = Input.GetAxis("Horizontal");

        v=Input.GetAxis("Vertical");

 

        //调整血条

        UIAdjust(hpTra, hpText, hpWidth, hpMax, h);

        //调整蓝条

        UIAdjust(mpTra, mpText, mpWidth, mpMax, v);

    }

    /// <summary>

    /// 调整UI

    /// </summary>

    /// <param name="tra">UI的RectTransform</param>

    /// <param name="text">文本</param>

    /// <param name="maxWidth">最大宽度</param>

    /// <param name="maxValue">最大值</param>

    /// <param name="axis"></param>

    void UIAdjust(RectTransform tra,Text text,float maxWidth,float maxValue,float axis)

    {

        //如果玩家开始调整UI

        if (axis != 0)

        {

            //当前UI宽度

            float currentWidth = tra.sizeDelta.x + Time.deltaTime * axis * speed;

            //限制后UI的宽度

            currentWidth =Mathf.Clamp(currentWidth, 0, maxWidth);

            //调整UI的宽度

            tra.sizeDelta = new Vector2(currentWidth, tra.sizeDelta.y);

            //计算当前的值

            float currentValue = currentWidth / maxWidth * maxValue;

            //将值更新当文本中

            text.text = Mathf.Round(currentValue).ToString() + "/" + maxValue.ToString();

        }

    }

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值