使用 IMGUI 和 UGUI 实现血条
使用 UGUI 实现血条
使用UGUI时,血条是游戏对象的一个子元素。
过程
-
先新建一个plane,gameobject->3Dobject->plane
-
导入资源包Standard Assets中的Characters部分
-
将 ThirdPersonController 预制拖入场景,属性为:
Plane 的 Transform 的 Position = (0,0,0)
ThirdPersonController 的 Transform 的 Position = (0,0,0),Rotation = (0,180,0)
ThirdPersonController 的 Scale(2,2,2),
Main Camera 的 Transform 的 Position = (0,3,-10) -
选择 ThirdPersonController 用上下文菜单(鼠标右键) -> UI -> Canvas,添加画布子对象
-
选择 ThirdPersonController 的 Canvas,用上下文菜单 -> UI -> Slider,添加滑条作为血条子对象
-
选择 Ethan 的 Canvas,在 Inspector 视图设置属性:
设置 Canvas 组件 Render Mode 为 World Space
设置 Rect Transform 组件的 (PosX, PosY, Width, Height) 为 (0,2,2,1)
设置 Rect Transform 组件的 Scale(x, y)为 (0.5,0.5) -
展开 Slider
选择 Background,修改 Image 组件的 Color 为 红色
选择Handle Slide Area,在 Inspector 视图把勾勾取消掉 -
选择Slider,在 Inspector 视图
设置 Rect Transform 组件的Rotation = (0,180,0)
设置 Rect Transform组件的Pos(x,y,z,width,height)=(0,0,0,160,20)
设置Slider 组件的 MaxValue 为 1
设置normal color为红色 -
运行检查结果,发现人物运动时(用方向键控制),血条会跟着人物旋转,没有面对主摄像机。
-
故需要给 Canvas 添加以下脚本 LookAtCamera.cs
using UnityEngine;
public class LookAtCamera : MonoBehaviour
{
void Update()
{
this.transform.LookAt(Camera.main.transform.position);
}
}
- 将脚本拖入Canvas对象,运行,这个时候血条就会一直面向主摄像机了。
使用 IMGUI 实现血条
代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bloodBar_script : MonoBehaviour {
public float curBlood = 10f;
private float targetBlood = 10f;
private Rect bloodBarArea;
private Rect addButton;
private Rect minusButton