由于电脑原因不能截图:有什么问题大家可以QQ联系84190933
一、首先我们先建立一个Slider方法如下:
在Hierarchy面板下空白地方右击找到UI 下的Slider,添加slider
这时你的Hierarchy就会出现Canvas,点开Canvas你就能看到你所需要的Slider了(我们用slider代替血条),然后我们修改下Slider:将Background的Color改为红色(看起来像血量)
然后将Handle Slide Area删掉,
在Project面板下建立Resources文件夹,(重要的事情说三遍,建立Resources文件夹,建立Resources文件夹,建立Resources文件夹)
将Slider 拖到Project面板下的Resources文件夹里(成为预设体)
随便建立一个Cube作为你的玩家
二、然后建立一个C#脚本挂到玩家身上,(作为玩家移动的脚本)
public float MoveSpeed;//移动速度
public float RotaSpeed;//旋转速度
void Update ()
{
ver = Input.GetAxis ("Vertical");
hor = Input.GetAxis ("Horizonal");
transform.Translate (0, 0, ver * Time.deltaTime * MoveSpeed);
transform.Rotate (0, hor * Time.deltaTime * RotaSpeed, 0);
}
重要的环节来了,该写血条动态加载的脚本了
将改脚本挂到玩家身上,注意偏移量呦,让血条在指定位置出现就是靠偏移量来调整的
using UnityEngine;
using System.Collections;
public class BloodCtrl : MonoBehaviour
{
public Vector2 vecOffset;//偏移量
private Vector2 vecPosInScreen;//对象在屏幕中的位置
private RectTransform reTrBloodThis;//本对象的血条
void Start ()
{
//克隆血条,克隆Resources/Prefabs/BloodSlider,动态加载
reTrBloodThis = Instantiate (Resources.Load(
"Slider")) as RectTransform;
//指定相应的Canvas
reTrBloodThis.SetParent (
GameObject.Find("Canvas").transform);
//指定大小
reTrBloodThis.localScale = Vector3.one;
//显示出来
reTrBloodThis.gameObject.SetActive (true);
}//end_Start
void Update ()
{
//将对象的世界坐标系转为屏幕坐标系
vecPosInScreen = Camera.main.WorldToScreenPoint (
transform.position);
//血条的坐标 = 对象在屏幕中的坐标 + 偏移量
reTrBloodThis.position = vecPosInScreen + vecOffset;
//如果血条超出屏幕,则隐藏
if (reTrBloodThis.position.x < 0
|| reTrBloodThis.position.x > Screen.width
|| reTrBloodThis.position.y < 0
|| reTrBloodThis.position.y > Screen.height) {
reTrBloodThis.gameObject.SetActive (false);
} else {
reTrBloodThis.gameObject.SetActive (true);
}
}//end_Update
}
建议大家不要直接复制粘贴,一方面可能报错,而且不利于你理解,有什么问题可以给我留言,我很喜欢你们提的问题,尤其是美女呦!!!