当前位置:   article > 正文

U3D游戏角色血条制作并显示血量变化_unity 3d血条显示

unity 3d血条显示

U3D游戏角色血条制作并显示血量变化

关键:利用Slider来制作血条
大概效果:
数字会随着血量变化而变化。
在这里插入图片描述

步骤

1、在层级面板中右击,选择UI中的Slider.
在这里插入图片描述
2、创建好后,将Slider命名为HealthBar,可以看到层级面板中Slider的结构为,删掉其中的“Handle Slide Area”.
在这里插入图片描述
3、在层级面板选中HealthBar,在右侧的检查器窗口可以看到Slider组件属性,在MaxValue和MinValue内设置值,表示角色的血量范围,这里设置血量范围0-100,勾选整数.
在这里插入图片描述

4、选择HealthBar下的Background,在右侧检查器中,点击Rect Transform下的stretch.
在这里插入图片描述
点开stretch后,按住“Alt”键同时鼠标点击右下方的方块,让Background铺展开来.
按住Alt键同时点击鼠标
铺展开的HealthBar为如下形式
在这里插入图片描述
5、对Fill Area和其下的Fill也做上一步的操作。(注意,Fill Area和Fill要分别进行操作),效果如下
在这里插入图片描述
6、改变Background和Fill的颜色来区分。
在这里插入图片描述
在这里插入图片描述
效果:
HealthBar组件下的Value滑块可以看改变值时的状态,若是在改变值的时候,血条改变方向不对的话可以改变Fill Area的旋转值,根据自己游戏内坐标调整。
在这里插入图片描述
我的调整
在这里插入图片描述
7、在HealthBar层级下新建一个旧版的Text,并命名为CurrentHealth.
在这里插入图片描述
修改文字的格式、位置、内容等
在这里插入图片描述

在这里插入图片描述

8、创建一个脚本,命名为PlayControl,挂载到你的游戏的主角上。
首先创建变量用来存储当前的血量和最大血量

private float maxHealth=100;
public float MyMaxHealth
{
    get { return maxHealth; }
}
private float currentHealth;
public float MyCurrentHealth
{
    get { return currentHealth; }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在Start()中

currentHealth = maxHealth;
HealthBar.Instance.changeHealth();
  • 1
  • 2

减少血量的函数

public void ReduceHealth(float health)
{
    currentHealth = Mathf.Clamp(currentHealth - health, 0, maxHealth);
    HealthBar.Instance.changeHealth();
}
  • 1
  • 2
  • 3
  • 4
  • 5

9、创建一个脚本,命名为HealthBar,并挂载到HealthBar上。

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class HealthBar : MonoBehaviour
{
    Slider healthBar;
    //在unity中关联游戏角色
    public  PlayerControler _play=new PlayerControler();
    //创建一个单例
    public static HealthBar Instance;
    //挂载创建的CurrentHealth的文本UI
    public Text healthNumber;

    void Awake()
    {
        Instance = this;
    }

    public void changeHealth()
    {
        //在playcontrol脚本中调用该函数,所以先判断是否获取到组件,
        //若是放在该脚本的Start中可能会获取不到
        if (healthBar == null)
        {
            healthBar = GetComponent<Slider>();
        }
        //使用该段代码前,在Slider检视器中勾选整数,设置最大最小值
        healthBar.value = _play.MyCurrentHealth;
        healthNumber.text=healthBar.value+"/"+_play.MyMaxHealth;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

10、挂载完HealthBar脚本后,将主角拖到“播放”框内,将CurrentHealth文本拖到“HealthNumber”中,差不多可以实现效果了
在这里插入图片描述
如果有问题,欢迎留言 (๑•̀ㅂ•́)و✧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/895363
推荐阅读
相关标签
  

闽ICP备14008679号