zoukankan      html  css  js  c++  java
  • WASD控制UI界面血条加减

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    
    public class HealthController : MonoBehaviour {
    
        //当前对象是血条还是蓝条
        public bool isHealth = false;
        //虚拟轴,横轴,纵轴
        private float hor,ver;
        //血条的最大宽度
        private float healthMaxWidth = 470;
        //蓝条的最大宽度
        private float powerMaxWidth = 425;
        //当前的虚拟轴
        private float currentAxis;
        //当前的最大宽度
        private float currentMaxWidth;
        //RectTransform组件
        private RectTransform rectTr;
        //速度
        public float speed = 100;
        //血条文本
        public Text healthText;
        //蓝条文本
        public Text powerText;
        //血条蓝条的最大值
        public float healthMaxValue = 1000f;
        public float powerMaxValue = 500f;
        //当前的条的最大值
        private float currentMaxValue;
        //当前修改的文本显示框
        private Text currentText;
    
        void Start()
        {
            rectTr = GetComponent<RectTransform> ();
        }
    
        void Update()
        {
            hor = Input.GetAxis ("Horizontal");
            ver = Input.GetAxis ("Vertical");
            //如果是血条
            if (isHealth) {
                currentAxis = hor;
                currentMaxWidth = healthMaxWidth;
                currentText = healthText;
                currentMaxValue = healthMaxValue;
            }
            //如果是蓝条
            else {
                currentAxis = ver;
                currentMaxWidth = powerMaxWidth;
                currentText = powerText;
                currentMaxValue = powerMaxValue;
            }
            //根据用户的操作,计算当前条的宽度
            float newWidth = rectTr.sizeDelta.x +
                currentAxis * Time.deltaTime * speed;
            //限制宽度
            float realWidth = Mathf.Clamp (newWidth, 0, currentMaxWidth);
            //赋值到RectTransform
            rectTr.sizeDelta = new Vector2(realWidth,rectTr.sizeDelta.y);
            //计算当前数值
            float currentValue = (realWidth / currentMaxWidth) * currentMaxValue;
            //转整数操作
            currentValue = Mathf.Round (currentValue);
            //将数值信息显示到Text
            currentText.text = currentValue.ToString () + "/"
                + currentMaxValue.ToString ();
        }
    }

    血条,蓝条对象上都挂上此脚本

  • 相关阅读:
    问题:Controller中Response的用法
    C#中字符串前缀@和$
    C#中Viewbag和ViewData的区别
    C#中Session和Cache的区别
    try catch捕获异常
    C#开发中,添加错误日志功能,并自定义错误页面
    数据库索引中,聚集索引和非聚集索引有何区别?
    String和StringBuilder的区别?
    C#函数,引用类型作为值参数,改变参数值后,形参也会改变.重新给实参赋值后,形参则不会改变.
    jQuery操作radio选中和取值
  • 原文地址:https://www.cnblogs.com/VR-1024/p/6011676.html
Copyright © 2011-2022 走看看