3D游戏编程作业8

作业要求

血条(Health Bar)的预制设计。具体要求如下
使用 IMGUI 和 UGUI 实现
使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机
分析两种实现的优缺点
给出预制的使用方法

作业内容

分析两种方法的优缺点

IMGUI:

1、如果不做复杂的界面,代码简单易用;
2、在修改模型,渲染模型这样的经典游戏循环编程模式中,在渲染阶段之后,绘制 UI 界面无可挑剔;
3、避免了 UI 元素保持在屏幕最前端,又有最佳的执行效率,一切控制掌握在程序员手中,这对早期计算和存储资源贫乏的游戏设备来说,更是弥足珍贵。
缺点:

传统代码驱动的 UI 开发效率低下,难以调试。

IMGUI是其中GUI系统通常不保留有关GUI的信息,而是反复要求您重新指定控件是什么,控件在哪里等的控件。当您以函数调用的形式指定UI的每个部分时,会立即对其进行处理(绘制,单击等),并且任何用户交互的后果都会立即返回给您,而无需您进行查询。这对于游戏UI而言效率低下,由于一切都变得非常依赖于代码,因此对于设计师来说不方便使用。

但是它对于非实时情况,由代码驱动,希望根据当前状态轻松更改显示的控件的处理是非常方便的,也就是说,它是一个很好的编辑面板的选择。

UGUI:

优点:

1、为了让设计师也能参与参与程序开发,从简单的地图编辑器、菜单编辑器等工具应运而生。 设计师甚至不需要程序员帮助,使用这些工具就可直接创造游戏元素,乃至产生游戏程序;

2、所见即所得(WYSIWYG)设计工具;

3、支持多模式、多摄像机渲染;

4、面向对象的编程。

预制设计

IMGUI

使用脚本设计血条。

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

public class NewBehaviourScript : MonoBehaviour
{
    private float hSliderValue = 75f;
    private void OnGUI()
    {
        Vector3 worldPos = new Vector3(transform.position.x, transform.position.y, transform.position.z);
        Vector2 screenPos = Camera.main.WorldToScreenPoint(worldPos);
        hSliderValue = GUI.HorizontalSlider(new Rect(screenPos.x - 50, screenPos.y, 100, 100), hSliderValue, 0.0f, 100.0f);
    }
}

UGUI

使用unity原有的配置进行血条制作。

效果:

上面是IMGUI的效果,下面是UGUI的效果。

视频效果:

血条

预制的使用方法

IMGUI

将脚本直接挂在游戏对象即可。

UGUI

点击Assets,打开你的场景。右键点击你的游戏对象,选择UI,点击滑动条,之后场景会出现画布,画布上有血条。将血条的相关参数设置好即可。

 源码:作业8 · BaiLee/3D游戏编程 - 码云 - 开源中国 (gitee.com)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值