最近 正在做一个小项目 是一个射击类型的小游戏 因为 我也属于 小白入门级别的 所以 当想 用NGUI做 怪物头顶 血条 还有弹出 伤害值 的时候 不知道从哪里下手了 随后我就上网搜资料 网上说 有插件可以做出来 可是 毕竟是自己学习吗 用插件 不知道什么原理 就 弄出来了 所以 决定自己弄一下 继续在网上搜 资料和类似的教程 在 蛮牛教育上 我看到一个类似的教程 有了一些 思路 现在 说说自己 学习的 心得 小白级别 说的不对的 地方 求指点 共同进步 大神勿喷 教程上是拿 NGUI 做出来的
首先 咱先 建立一个2D UI 在里面 建立2个 UI sprite 都拉成长条形 都玩过游戏 应该知道 啥样 这两个UIsprite 一个做背景 一个减血的滑条做前景(注意depth层级) 然后 往前景的sprite 先添加一个 box colloder 在添加一个 UI slider 脚本 然后把前景的 拖到 forground 背景的 拖到 background
这样 就OK 啦 然后 咱就 可以 用 value 值 控制血条的 滑动了
然后 我就把 放到 小怪兽 子物体里 位置 放他脑袋上 那么问题 来了 一拖进去 怪物 也跑到 也跑到 UIROOT 里面了 而且 怪物的大小 也变的很小 所以 我们需要 先把 血条 从UI ROOT 里 拿出来 把原来的UI root 删了 因为我们知道 所有NGUI 下的东西 都是只能在 有UIpanel 脚本的 才可以的 所以 在小怪兽 的身上 加一个UIpanel 这样 血条 就能拖到他里面 放到脑袋顶上了
然后 把 弄好的东西 做成一个 预设体 OK 准备工作 做好后 我们来写脚本把 因为只是个例子 所以 就写成 点击鼠标一下 受10点伤害 using UnityEngine;
using System.Collections;
public class ZomHp : MonoBehaviour {
public float hp = 100;
public UISlider blood;
public float atk = 10;
void Start () {
blood = gameObject.GetComponentInChildren<UISlider>();
blood.value = 1;
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0)) {
hp -= atk;
}
blood.value = hp / 100;
}
}
很简单的脚本 最后 让 血条 一直面向摄像机
void Update () {
this.transform.rotation = Camera.main.transform.rotation;
}
如果 还想 做飘伤害的话 直接实例化字体就好啦 感谢 蛮牛教育 出了这么好的教程 给我这些初入江湖的小白 一些指引 哈哈
|