3D游戏09——血条的预置设计

使用IMGUI实现血条设计

  1. 设计两个按钮分别控制血量的增加和减少
  2. 为了使血条平滑的变化,使用Mathr.Lerp来计算血量值
  3. 具体做法,新建一个空对象IMGUI-H-Bar,将如下脚本挂载到对象上:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine UI;

public class IMGUIxuetiao : MonoBehaviour {
    public Slider slider;
    private Rect health_pos; //血条位置
    private Rect add_pos; // 加血按钮位置
    private Rect sub_pos; //减血按钮位置
    private float health = 0.0f; //血量
    private float temp; 
    // Use this for initialization
    void Start () {

        addPos = new Rect(0, 0, 50, 25);
        subPos = new Rect(50, 0, 50, 25);
    }

    // Update is called once per frame
    void Update () {

    }
    private void OnGUI()
    {
        if (GUI.Button(add_pos, "加血"))
        {
            temp = health + 0.1f > 1.0f ? 1.0f : health + 0.1f;
        } else if (GUI.Button(sub_pos, "减血"))
        {
            temp = health - 0.1f < 0 ? 0.0f: health - 0.1f;
        }
        health_pos = new Rect(Screen.width / 2 - 50, 0, 100, 50);
        health = Mathf.Lerp(health, temp, 0.05f);
        GUI.HorizontalScrollbar(health_pos, 0, health, 0, 1);
    }
}

使用UGUI实现血条设计

  1. 导入游戏对象,(我是从Assets Store中下载的小人),并拖入到场景中,命名为Ethan
  2. 在Ethan中新建一个plane对象
  3. 在Ethan中添加一个子画布(右键 -> UI -> Canvas)
  4. 在Canvas中添加滑条(右键 -> UI -> Slider)作为血量条
    设置Canvas的属性如下:
    在这里插入图片描述
  5. 设置Slider的属性如下:
    禁灰Background和Handle Slide Area
    修改rotation和image中的color
    为了让UGUI和IMGUI同时出现在界面上,我们在脚本中新增一个Slider实例:
public Slider slider2;
slider2.value = health;

可以试着运行,更改血条变化:
在这里插入图片描述
为了使血条任何时候都面对主摄像机,我们为Canvas挂载如下脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LookAtMamera : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        this.transform.LookAt(Camera.main.transform.position);
    }
}

两种实现的优缺点

IMGUI的优点

  • 符合传统游戏编程
  • 把程序主动权掌握在编写代码的程序员手中,避免了UI元素在前端的更改
  • 执行效率高
  • 渲染效果好

IMGUI的缺点

  • 调试相对比较困难,维护成本高
  • 不利于设计布局
  • 渲染速度慢

UGUI的优点

  • 可视化,易于设计和布局
  • 支持多模式、多摄像机渲染
  • UI元素与游戏场景融汇式交互

UGUI的缺点

  • 学习成本高
  • 对设备要求更高

预置的使用方法

  1. 直接将预制体对象拖入场景
  2. 用脚本导入场景
  3. 将Canvas预制体拖入场景,成为游戏对象的子对象
  4. 将Canvas的子对象Slider拖入脚本组件的Slider对象中

项目传送门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值