马上注册,加入CGJOY,让你轻松玩转CGJOY。
您需要 登录 才可以下载或查看,没有帐号?立即注册
×
经过研究一些高手制作的gui血条后发现讲解的不够详细 结合本人学的一点点的知识对它解释一下希望对后学者有帮助:
using UnityEngine;
using System.Collections;
public class BloodBarTest : MonoBehaviour {
public float bloodValue;
// 血条值
private float tmpValue;
//后面讲解
private bool onoff;
void Start () {
tmpValue = bloodValue=0f;
//将血条值初始化为0
}
void OnGUI (){
GUI.skin = theSkin;
//这一句要有新建的有皮肤 没有的话就删了
if (GUI.Button (new Rect (50,20,40,20),"加血")){
tmpValue = -1.0f;
}
//创建一个用于加血的按钮,点击加血
if (GUI.Button (new Rect (50,50,40,20),"减血")){
tmpValue = 0f;
}
//创建一个用于减血的按钮,点击减血
if (bloodValue > 0.0f) tmpValue = 0.0f;
if (bloodValue < -1.0f) tmpValue = -1.0f;
//这两句经过本人研究发现bloodValue不会出现大于0或者是小于-1的情况,所以可以注释掉。
bloodValue = Mathf.Lerp(bloodValue,tmpValue,0.01f);
//这一句就是关键了mathf用于控制它的前两个参数的取值范围 当第三个参数为 0时候等于第一个参数值当第三个参数等于-1时候为第二个参数值 ,这里取0.01就是让他接近与第一个参数所以当按下加血按钮时候bloodValue 值会从0逐渐变为负数并且会逐渐靠近-1。同理当按下减血按钮时候bloodValue 会逐渐靠近0。 从而出现加血减去血的状况。
GUI.VerticalScrollbar(new Rect (20,20,20,200), 1.0f, bloodValue,0.0f, 1.0f,GUI.skin.GetStyle("verticalScrollbar"));
}
bloodValue = Mathf.Lerp(bloodValue,tmpValue,0.01f);
//这个是制作滚动条比较简单就不解释了
}
主要还是 bloodValue = Mathf.Lerp(bloodValue,tmpValue,0.01f);
这一句理解了就很简单。 |