查看: 10375|回复: 62
收起左侧

[旅行的拾荒者] UGUI缓动血条制作

  [复制链接]

[旅行的拾荒者] UGUI缓动血条制作  [复制链接]

旅行的拾荒者 发表于 2017-3-23 10:20:07 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  63 浏览:  10375

[AppleScript] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class BossHealthBar : MonoBehaviour
{
    public static BossHealthBar instance;
    public GameObject goHealthBar;
    public Scrollbar forDel;
    private Vector3 positionVec3 = new Vector3();
    public Text HpTxt;
    private int index = 1;//当前血条阶段
    public int Index
    {
        get
        {
            return this.index;
        }

        set
        {
            this.index = value;
        }
    }

    void Start()
    {
        timer = 10;
        this.positionVec3 = this.transform.localPosition;
    }
    void Update()
    {
        this.CastAnimation(this.goHealthBar);
    }
    /// <summary>
    /// 血条当前值显示
    /// </summary>
    /// <param name="curValue">当前血量</param>
    /// <param name="maxValue">最大血量</param>
    public void SetHealthValueText(int current, int max, bool isTrubans)
    {
        if (isTrubans)
        {
            float hp = ((float)current / (float)max) * 100;
            HpTxt.text = hp.ToString("f") + "%";
        }
        else
        {
            HpTxt.text = current + "/" + max;
        }
    }

    /// <summary>
    /// 血条状态处理
    /// </summary>
    /// <param name="curValue">当前血量</param>
    /// <param name="maxValue">最大血量</param>
    public void UpdateHealthBar(int curValue, int maxValue, bool isTurbans)
    {
        Scrollbar progressBar = null;
        Image _sp = null;
        progressBar = this.goHealthBar.GetComponent<Scrollbar>();
        _sp = this.transform.Find("HealthBar/SlidingArea/forDel").GetComponent<Image>();
        if (curValue >= maxValue)
        {
            curValue = maxValue;
            progressBar.size = 1;
            return;
        }
        if (maxValue <= 0 && isTurbans == false)
        {
            this.gameObject.SetActive(false);
        }
        if (Index == 0) return;
        int valueOfLine = maxValue / Index;
        if (valueOfLine <= 0)
            return;
        int index = curValue / valueOfLine;
        if (curValue % valueOfLine == 0)
            index--;
        float value = (curValue - index * valueOfLine) / (float)valueOfLine;
        if (curValue <= 0)
            value = 0;
        if (null != progressBar)
        {
            progressBar.size = value;
        }
    }

    //血条中间图片滑动处理
    void CastAnimation(GameObject father)
    {
        Scrollbar progressBar = null;
        if (null != father)
        {
            progressBar = father.GetComponent<Scrollbar>();
        }
        if (null == progressBar)
        {
            return;
        }
        if (this.forDel.size <= progressBar.size)
        {
            this.forDel.size = progressBar.size;
        }
        else
        {
            this.forDel.size -= Time.deltaTime * 0.5f;
        }
    }

#region 测试代码
    private float timer;       //距离多长时间刷新列表
    private float useTime = 0;
    int xt = 100;
    void FixedUpdate()
    {
        if (timer > 0 && useTime < Time.time)
        {
            useTime = Time.time + 1;
            timer -= 1;
            xt =xt- 10;
            UpdateHealthBar(xt, 100, false);
            SetHealthValueText(xt, 100, false);
        }
    }
#endregion

}
      Untiy3D新手交流群 158831907

NGUI版本:https://www.noobdev.cn/?p=78

UGUI血条Demo下载:

游客,如果您要查看本帖隐藏内容请回复



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 4泰斗币 +52 热心值 +3 收起 理由
冷筱曦 + 1 赞一个!
kckbkckb2 + 1 + 1 很给力!
优弧 + 1 + 1
里斯 + 50 原创内容

查看全部评分

+1
10440°C
63
  • frankwswswws
  • newwer
  • vitalera
  • 哈哈哈哈1111
  • Hello2Unity
过: 他们
因分享而快乐,学习以自强!
frankwswswws 发表于 2017-3-23 12:56:33 显示全部楼层
很好看的效果,以前我做血条都是直接写血量
因分享而快乐,学习以自强!
newwer 发表于 2017-3-23 15:41:15 显示全部楼层
666666666666666
因分享而快乐,学习以自强!
vitalera 发表于 2017-3-23 16:04:54 显示全部楼层
i want dowload it
因分享而快乐,学习以自强!
哈哈哈哈1111 发表于 2017-3-23 16:10:43 显示全部楼层
哈哈哈  感谢分享
因分享而快乐,学习以自强!
Hello2Unity 发表于 2017-3-23 16:17:56 显示全部楼层
ffffffffffffffffffffffffffffffffffffffffffssssssssssssssss{:5_116:}
因分享而快乐,学习以自强!
乱码君 发表于 2017-3-23 16:18:23 显示全部楼层
多谢分析~~~~~~~~~~~
因分享而快乐,学习以自强!
zyh8808 发表于 2017-3-23 16:22:22 显示全部楼层
下来学习一下
因分享而快乐,学习以自强!
元元 发表于 2017-3-23 16:34:34 显示全部楼层
谢谢楼主的分享!
因分享而快乐,学习以自强!
947633658 发表于 2017-3-23 18:02:34 显示全部楼层
的撒大苏打撒后决定更换
因分享而快乐,学习以自强!
梁旭东 发表于 2017-3-24 09:20:53 显示全部楼层
谢谢分享
因分享而快乐,学习以自强!
清水无为 发表于 2017-3-24 10:41:55 显示全部楼层

谢谢分享!!!!!!!!!
因分享而快乐,学习以自强!
ths1127 发表于 2017-3-24 18:13:02 显示全部楼层
感谢分享感谢分享感谢分享
因分享而快乐,学习以自强!
cry520 发表于 2017-3-25 11:28:44 显示全部楼层
泰斗帖子强,满满正能量。
因分享而快乐,学习以自强!
kckbkckb2 发表于 2017-3-26 13:20:30 显示全部楼层
据传说楼主直接上了干货?!!
就喜欢这痛快的。
感谢楼主分享!{:6_144:}
因分享而快乐,学习以自强!
12345下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 沪ICP备14023207号-9 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ