unity3d 进度条 scrollbar

2015年01月27日 11:31 0 点赞 0 评论 更新于 2025-11-21 15:34

下面为大家分享 Unity3D 进度条 Scrollbar 的代码,供大家参考学习。

using UnityEngine;
using System.Collections;

public class BloodBarTest : MonoBehaviour {
// 定义 GUISkin 变量,用于设置 GUI 的皮肤
public GUISkin theSkin;
// 定义血量值,初始为 0.0f
public float bloodValue = 0.0f;
// 定义临时血量值
private float tmpValue;
// 定义血条的矩形区域
private Rect rctBloodBar;
// 定义加血按钮的矩形区域
private Rect rctUpButton;
// 定义减血按钮的矩形区域
private Rect rctDownButton;
// 定义一个布尔变量,这里暂时未使用
private bool onoff;

// 初始化方法,在游戏对象激活时调用
void Start () {
// 初始化血条的矩形区域,位置为 (20, 20),宽 20,高 200
rctBloodBar = new Rect (20, 20, 20, 200);
// 初始化加血按钮的矩形区域,位置为 (50, 20),宽 40,高 20
rctUpButton = new Rect (50, 20, 40, 20);
// 初始化减血按钮的矩形区域,位置为 (50, 50),宽 40,高 20
rctDownButton = new Rect (50, 50, 40, 20);
// 将临时血量值初始化为当前血量值
tmpValue = bloodValue;
}

// 绘制 GUI 的方法,每帧调用
void OnGUI () {
// 设置当前使用的 GUISkin
GUI.skin = theSkin;

// 检测加血按钮是否被点击
if (GUI.Button (rctUpButton, "加血")) {
// 点击加血按钮后,将临时血量值设为 -1.0f
tmpValue = -1.0f;
}

// 检测减血按钮是否被点击
if (GUI.Button (rctDownButton, "减血")) {
// 点击减血按钮后,临时血量值增加 0.1f
tmpValue += 0.1f;
}

// 确保血量值不小于 0.0f
if (bloodValue > 0.0f) {
tmpValue = 0.0f;
}
// 确保血量值不大于 -1.0f
if (bloodValue < -1.0f) {
tmpValue = -1.0f;
}

// 使用 Mathf.Lerp 方法平滑过渡当前血量值到临时血量值
bloodValue = Mathf.Lerp(bloodValue, tmpValue, 0.05f);

// 注释掉的调试代码,可用于查看血量值和临时血量值
// Debug.Log (bloodValue + " " + tmpValue);

// 绘制垂直滚动条作为血条
GUI.VerticalScrollbar(rctBloodBar, 1.0f, bloodValue, 0.0f, 1.0f, GUI.skin.GetStyle("verticalScrollbar"));
}

// 每帧更新方法,这里暂时为空
void Update () {
// 可在此处添加每帧需要执行的逻辑
}
}

这段代码实现了一个简单的血条进度条功能,通过点击“加血”和“减血”按钮来改变血条的显示值,并且使用 Mathf.Lerp 方法实现了血量值的平滑过渡。