Unity UGUI实现王者荣耀版多格血条

上篇讲述了Boss多层血条的实现方法,这篇就主要讲述一下类似于王者荣耀,LoL的分段式血条,
这样的血条在游戏的视觉层会带给玩家非常好的体验。就好比玩家买了一个狂徒铠甲。如过你用
的是分段血条的话,就立即会增加血格,这样用户直接从视觉上会他看到了这件装备的效果,
他就会觉得他这个装备买值了,这件装备很厉害,就会感觉自己非常肉,然后就感觉自己的人生达到了
巅峰。但如果是一管的血条,你买了,血条还是那样没又任何变化,甚至这时候你都在怀疑,我买了这
件装备,有用吗?效果在哪里?所以有些东西,用户买了,要从视觉上就能给人表达出来,让用户知道
你买了这件装备,而且还很牛X,才会让用户记住这款游戏。

所以,我们一起来学习多段血条的制作吧!

效果图:

在这里插入图片描述
效果二 等宽无拉伸:
在这里插入图片描述

多段血条实现的原理就是,通过继承RawImage 重写父类方法,控制Rect的w值来实现的,和NGUI
背包物品拖拽交换的原理是一样的,都是通过继承和重写来达到自己想要的目的。当然既然说到了背包
物品的拖拽和交换,那么博主就好人做到底,在下面的博客中博主会把背包物品拖拽交换做成类似于小
插件或小工具,然后发布到博客,供大家使用。所以,为了下次可以方便的找到博主,这里可以关注下
博主噢。

下面介绍下多段血条的组成:

1.血条是由一个Slider构成的,如下图:
在这里插入图片描述

2.Max Value 用来控制初始血格的最大数,Value的值为多少,血格的个数就为多少。

在这里插入图片描述

3.在血量减少时,血格也会减少,血格的减少时通过UV Rect 的 w 值来进行控制的,
W值越小,血格越少,血量越低。

在这里插入图片描述

注意血条的图片是通过Awake()的Resource读取赋值的,图片很简单,很容易制作,这里就不上传了。
在这里插入图片描述

下面贴出图片样式和源码:
在这里插入图片描述
最后图片格式很重要 否则无法正常显示血条:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class UguiSlider : RawImage {

    /// <summary>
    /// 血条的值
    /// </summary>
    private Slider _BloodSlider;
    /// <summary>
    /// 血量图片红色
    /// </summary>
    private Texture redTexture;
    /// <summary>
    /// 血量图片绿色
    /// </summary>
    private Texture greenTextre;

    protected override void Awake()
    {
        base.Awake();
        //找图片
        redTexture = Resources.Load("222") as Texture;
        greenTextre = Resources.Load("111") as Texture;
    }
    /// <summary>
    /// 重写父类方法
    /// </summary>
    protected override void OnRectTransformDimensionsChange()
    {
        base.OnRectTransformDimensionsChange();

        //获取血条
        if (_BloodSlider == null)
        {
            _BloodSlider = transform.parent.parent.GetComponent<Slider>();
        }
        //不等于空
        if (_BloodSlider != null)
        {
            //赋值
            float Value = _BloodSlider.value;
            uvRect = new Rect(0, 0, Value, 1);

            //血量为0时,没有血量图片
            if (Value == 0)
            {
                texture = null;
            }
            //血量大于0,小于最大血量的20%时,血量为红色
            else  if(Value< _BloodSlider.maxValue*0.2f&&Value>0)
            {
             texture = redTexture;
            }
            //血量大于等于最大血量的20%时,血量为绿色
            else if (Value >= _BloodSlider.maxValue*0.2f)
            {
                texture = greenTextre;
            }

        }

    }

}

好了,多段血条就这样制作完成了!

上一篇:Dnf Boss版多层血条制作

努力积才能,壹叶便成名。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铸梦xy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值