3D游戏第九次作业

3D游戏第九次作业 

1.  血条(Health Bar)的预制设计。具体要求如下

  • 分别使用 IMGUI 和 UGUI 实现
  • 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机
  • 分析两种实现的优缺点
  • 给出预制的使用方法

IMGUI:

效果展示:

实现:

制作一个红色cube作为血条,并用脚本控制血条的位置,添加两个button用来加减血量

以上脚本挂载在预制的cube上,并且把人物作为共有变量以确定血条的位置

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

public class healthBar : MonoBehaviour
{
    float padding = 0;
    public Transform t;
    // Start is called before the first frame update
    void Start(){ }

    // Update is called once per frame
    void Update()
    {
        this.transform.position = new Vector3(t.position.x-padding, t.position.y + 2, t.position.z);
    }

    private void OnGUI()
    {
        //加血
        if (GUI.Button(new Rect(250, 50, 40, 20), "+"))
        {  
            padding -= 0.05f;
            transform.localScale = new Vector3(transform.localScale.x + 0.1f, transform.localScale.y, transform.localScale.z);
        }

        //扣血
        if (GUI.Button(new Rect(250, 70, 40, 20), "-"))
        {
            if (transform.localScale.x > 0)
            {
                padding += 0.05f;
                transform.localScale = new Vector3(transform.localScale.x - 0.1f, transform.localScale.y, transform.localScale.z);
            }
        }
    }
}

UGUI:

效果展示:

实现:

创建一个人物对象,给它添加canvas画布子对象,并添加 Slider 作为血条主体。

将 Slider 中的 Handle Slider Area 、 Background 禁用,并且设置Fill的Image组件颜色为红色,调整Slider 组件的MaxValue 为 100、Value 为 75。

并给 Canvas 添加以下脚本 LookAtCamera.cs

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


public class LookAtCamera : MonoBehaviour {

	void Update () {
		this.transform.LookAt (Camera.main.transform.position);
	}
}

使用时,只需要勾选Canvas或者healthBar

两种实现方法的比较

IMGUI

实现简单,比如绘制一个控件,只需要GUI.Lable()、GUI.Button()这样即可,不需要使用UI组件,很容易上手。IMGUI的存在符合游戏编程的传统,在修改模型,渲染模型这样的经典游戏循环编程模式中,在渲染阶段之后,绘制 UI 界面无可挑剔。避免了 UI 元素保持在屏幕最前端,又有最佳的执行效率,一切控制掌握在程序员手中,这对早期计算和存储资源贫乏的游戏设备来说,更是弥足珍贵。

UGUI

可视化,所见即所得(WYSIWYG)设计工具,设计师也能参与程序开发,支持多模式、多摄像机渲染,UI 元素与游戏场景融为一体的交互,UGUI的控件是以“游戏对象”的形式存在与游戏场景中,这样直观易于使用,直接可以在Scene视图中编辑大小、位置、旋转角度、缩放等等,不需要手动写任何代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值