【Unity】进度条和血条的三种做法

前言

在使用Unity开发的时候,进度条和血条是必不可少的,本篇文章将简单介绍一下几种血条的制作方法。

1.使用Slider

Slider组件由两部分组成:滑动区域和滑块。滑动区域用于显示滑动条的背景,而滑块则表示当前的数值位置。用户可以通过拖动滑块来改变数值。

新建Slider,右键选择UI / Slider

Slider组件的常用属性

  • Fill Rect: 滑动的填充图片,上图中的绿色部分
  • Handle Rect: 滑块块指数当前位置,上图中的圆点。【如果不需要这个,可以直接删掉】
  • Min Value: 滑动的条值小最
  • Max Value: 滑动条的最值大
  • Value : 滑动条的当前值。
  • Whole Numbers : 只允许整值数。
  • Direction : 滑动条的方向,可以是水平或垂直。

程序调用

csharp 复制代码
	public Slider slider;
    void Start()
    {
        //设置血量为一半
        slider.value = 0.5f;
        //监听slider变化
        slider.onValueChanged.AddListener(OnSliderValueChanged);
    }

  
    void OnSliderValueChanged(float val)
    {
        
 
    }

2.修改RectTransform的Width

①新建2个Image,一个充当底图,一个从当进度条

②修改image的Pivot

Pivot(0,0.5)表示图片的中心点在:左边中间位置

为什么要修改中心点?

那是因为我们的血条是需要从左向右增加的,当然其他方向同理。
代码示例:

csharp 复制代码
	//需要修改的血条
	public RectTransform mRt;
    //血条最大值
    public float max = 200;

    void Start()
    {
        //设置血量为80%
        SetHp(0.8f);
    }
    //设置当前血量
    void SetHp(float val)
    {
        //先取出当前的宽和高
        Vector2 cur = mRt.sizeDelta;
        //得到需要修改的宽度
        cur.x = val * max;
        //重新赋值
        mRt.sizeDelta = cur;
    }

3.修改Image的fillAmount

①首先要修改Image Type为Filled

②Fill Method:血条的方式

Horizontal:水平方向

Vertical:垂直方向

Redial 90:以90度为最大值

Redial 180:以180度为最大值

Redial 360:以360度为最大值

③Fill Origin:血条的起点位置,根据自己的需求选择

代码示例:

csharp 复制代码
    //需要修改的图片
    public Image mImage;
    
    void Start()
    {
        //设置血量为80%,最大为1
        SetHp(0.8f);
    }
    //设置当前血量
    void SetHp(float val)
    {
        mImage.fillAmount = val;
    }
相关推荐
qq_370773097 小时前
Unity游戏xLua逆向实战:从SO版本识别到Lua脚本热替换全链路
游戏·unity·lua
mxwin9 小时前
Unity Shader 水面 Shader 教程 从 Gerstner 波浪到屏幕折射、焦散、泡沫的完整实现
unity·游戏引擎
噗噗夹的TA之旅10 小时前
Shader 学习 21:自定义 Render Feature
学习·游戏·unity·c#·游戏引擎·图形渲染
zcmodeltech15 小时前
化工装置沙盘模型多设备协同控制系统设计:基于STM32与Modbus RTU的装置-流程-安全联动方案
大数据·stm32·嵌入式硬件·安全·unity·制造
暗影凋落1 天前
Unity 射线检测优化:使用 Job System 实现高性能射线批处理
unity·游戏引擎·lucene
淡海水1 天前
12-01-YooAsset工程化-Unity资源管理规范
unity·c#·游戏引擎·yooasset
BuHuaX2 天前
U3D抖微小游戏开发流程 (一)
unity·c#·游戏引擎·游戏策划
_ZHOURUI_H_2 天前
Unity MyFramework 用法说明(二十三):使用 PrefabPoolManager 复用预设实例
unity·游戏引擎·游戏开发·游戏ui·手游开发
冰凌糕2 天前
Unity3D Shader 法线与基础光照
unity
新手unity自用笔记2 天前
unity网络基础_1
网络·unity·游戏引擎