unity3d-血条的设计

任务目标

完成血条的预制设计

任务要求
  1. 分别使用 IMGUI 和 UGUI 实现
  2. 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机
  3. 分析两种实现的优缺点
  4. 给出预制的使用方法
实现过程
  1. 使用IMGUI实现
    创建一个空对象,然后创建一个脚本,编辑脚本。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Experimental.UIElements;
    
    public class MGUI : MonoBehaviour {
    
        float blood;//血量
        //public Slider bl;
        //float curb;
        float p = 150f;//偏移位置
    
    	// Use this for initialization
    	void Start () {
    		
    	}
    
        private void OnGUI()
        {
    
            if(GUI.Button(new Rect(p+100,100,100,100),"加血"))//创建加血按钮
            {
                if (blood < 1)
                {
                    blood += 0.1f;
                }
            }
            if(GUI.Button(new Rect(p+500, 100, 100, 100), "减血"))//创建扣血按钮
            {
                if (blood > 0.1f)
                {
                    blood -= 0.1f;
                }
            }
            GUI.HorizontalScrollbar(new Rect(p+300,300,200,50), 0f, blood, 0f, 1f);//滚动条表示血量
            //bl.value = blood;
        }
    }
    
    

    运行效果如下:
    在这里插入图片描述

  2. 使用UGUI实现
    首先添加一个对象作为血条的作用对象,使用的是unity自带的character,导入资源方法如下:
    在这里插入图片描述
    然后找到
    在这里插入图片描述
    将其拖入视图中,在此对象下添加UI->Canvas,然后在canvas里添加一个slider作为血条。
    设置canvas中的render mode为world space
    在这里插入图片描述
    设置fill area中的fill使得血条为红色
    在这里插入图片描述
    在这里插入图片描述
    设置slider的max value为1
    在这里插入图片描述
    这里的max value就是最大血量,min value就是最低血量。

    然后就需要调整血条的位置,使其显示在人物的头顶上方。
    在这里插入图片描述
    为了让血条一直正对屏幕(即摄像头),需要给血条加一个脚本,使其一直看相摄像头。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class lookcamera : MonoBehaviour {
    
    	// Use this for initialization
    	void Start () {
    		
    	}
    	
    	// Update is called once per frame
    	void Update () {
            this.transform.LookAt(Camera.main.transform.position);
        }
    }
    

    最后运行结果如下:
    在这里插入图片描述

对于这两种实现的方法制作成预制很简单,直接将对象拖入asset文件夹中即可保存为预制。

对于IMGUI的实现方法是完全使用代码来进行布置,所以对于重复的或者比较复杂的界面的设计时更加的方便与快捷。但是对于设计的要求比较高,使用代码来设置也比较难进行调试,不能很快的直观的看到效果。
对于UGUI来说在设计时非常的直观,能够直接看到设计的效果,而且不使用代码,直接对组件进行设置也更加的容易与直观。

项目地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值