unity动态加载血条Ressources.Load

由于电脑原因不能截图:有什么问题大家可以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

}


建议大家不要直接复制粘贴,一方面可能报错,而且不利于你理解,有什么问题可以给我留言,我很喜欢你们提的问题,尤其是美女呦!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容