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铺展开来. 铺展开的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; }

}

在Start()中

currentHealth = maxHealth;

HealthBar.Instance.changeHealth();

减少血量的函数

public void ReduceHealth(float health)

{

currentHealth = Mathf.Clamp(currentHealth - health, 0, maxHealth);

HealthBar.Instance.changeHealth();

}

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检视器中勾选整数,设置最大最小值

healthBar.value = _play.MyCurrentHealth;

healthNumber.text=healthBar.value+"/"+_play.MyMaxHealth;

}

}

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

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: