【Unity2D 2022:UI】制作角色血条

一、创建血底UI

1. 创建画布(Canvas)

        

2.  在画布上添加血底图像(Image)子物体

二、编辑血底UI

1. 将血底图片拖入源图像(Source Image)中

2.  点击设置为图片的原大小(Set Native Size)

 3. 调整血底的缩放比例和位置,使其位于画布的左上角

4. 将血底UI的锚点设置到左上角

 

三、创建角色头像UI

1.  在血底上添加角色头像子物体

四、编辑角色头像UI

1. 将角色头像图片拖入源图像(Source Image)中

2.  点击设置为图片的原大小(Set Native Size)

 3. 调整角色头像的缩放比例和位置,使其位于血底的圆圈中心

4. 将角色头像UI的锚点设置在头像的四个角(适应父对象的拉伸缩放)

五、创建血条UI

1. 在血底上添加血条子物体

六、编辑血条UI 

 1. 将血条图片拖入源图像(Source Image)中

2.  点击设置为图片的原大小(Set Native Size)

 3. 调整血条的缩放比例和位置,使其覆盖血底

4. 将血条UI的锚点设置在血条的四个角(适应父对象的拉伸缩放)

5. 在血底上添加遮罩图像(Image)子物体

        遮罩原理:与遮罩重叠的部分显示,不重叠的部分隐藏

6. 调整遮罩的缩放比例和位置,使其覆盖血底

7. 将遮罩的锚点设置在遮罩的四个角(适应父对象的拉伸缩放) 

8. 为遮罩添加Mask组件

9. 可以取消勾选显示遮罩图形(Show Mask Graphic)

10. 将血条拖拽到遮罩上,作为遮罩的子物体;将遮罩移动到角色头像上方,先渲染血条,再渲染角色头像

11. 再次将血条的锚点设置为遮罩左侧

12. 将遮罩设置为轴心模式

13. 将遮罩的轴心点设置为左侧

七、在角色生命值改变时缩放血条

1. 新建血条脚本

2. 编辑血条脚本

         (1)使用UnityEngine的UI命名空间

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 使用Unity的UI库
using UnityEngine.UI;

        (2)创建遮罩对象,获取遮罩的初始长度

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 调用Unity的UI库
using UnityEngine.UI;public class HealthBar : MonoBehaviour
{// 创建遮罩对象public Image mask;// 获取遮罩的初始长度private float originalSize;void Start(){// 遮罩初始长度为初始时遮罩当前长度originalSize = mask.rectTransform.rect.width;}
}

        (3)使用单例模式,初始化instance为当前血底游戏对象

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 调用Unity的UI库
using UnityEngine.UI;public class HealthBar : MonoBehaviour
{// 创建遮罩对象public Image mask;// 获取遮罩的初始长度private float originalSize;// 使用单例模式,创建血条对象public static HealthBar instance {get; private set; }// Awake()方法优先于Start()方法执行private void Awake(){// 将instance实例化为当前的血底游戏对象instance = this;}void Start(){// 遮罩初始长度为初始时遮罩当前长度originalSize = mask.rectTransform.rect.width;}
}

4. 编写changeLength()方法,用来改变血条长度

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 调用Unity的UI库
using UnityEngine.UI;public class HealthBar : MonoBehaviour
{// 创建遮罩对象public Image mask;// 获取遮罩的初始长度private float originalSize;// 使用单例模式,创建血条对象public static HealthBar instance {get; private set; }// Awake()方法优先于Start()方法执行private void Awake(){// 将instance实例化为当前的血底游戏对象instance = this;}void Start(){// 遮罩初始长度为初始时遮罩当前长度originalSize = mask.rectTransform.rect.width;}// 改变遮罩长度public void changeLength(float value){// 将遮罩长度设置为水平方向的初始长度*百分比mask.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, originalSize*value);}
}

3. 编辑角色脚本

        (1)删除控制台的Debug语句,调用changeLength()方法,改变血条长度

using Cinemachine.Utility;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using Unity.Mathematics;
using UnityEditor.Rendering;
using UnityEngine;public class Ruby : MonoBehaviour 
{// Ruby改变生命值public void changeHealthPoint(int value) {healthPoint = Mathf.Clamp(healthPoint+value, 0, maxHealthPoint);// 调用changeLength()方法,改变血条长度HealthBar.instance.changeLength((float)healthPoint/maxHealthPoint);if(healthPoint <= 0) {Destroy(gameObject);}}
}

4. 最终效果如下图所示:

        本章完。感谢阅读! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/41574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java | Leetcode Java题解之第219题存在重复元素II

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {Set<Integer> set new HashSet<Integer>();int length nums.length;for (int i 0; i < length; i) {if (i > k) {set.remove(nums[i - …

# 三 JS的流程控制和函数

三 JS的流程控制和函数 3.1 JS分支结构 if结构 这里的if结构几乎和JAVA中的一样,需要注意的是 if()中的非空字符串会被认为是trueif()中的非零数字会被认为是true 代码 if(false){// 非空字符串 if判断为trueconsole.log(true) }else{console.log(false) } if(){// 长度为0…

GitHub详解:代码托管与协作开发平台

文章目录 一、GitHub简介二、GitHub的核心功能2.1 仓库&#xff08;Repository&#xff09;2.2 版本控制与分支&#xff08;Branch&#xff09;2.3 Pull Request2.4 Issues与Projects2.5 GitHub Actions 三、GitHub的使用方法3.1 注册与登录3.2 创建和管理仓库3.3 使用Git进行代…

【密码学】密码学中的四种攻击方式和两种攻击手段

在密码学中&#xff0c;攻击方式通常指的是密码分析者试图破解加密信息或绕过安全机制的各种策略。根据密码分析者对明文、密文以及加密算法的知识程度&#xff0c;攻击可以分为以下四种基本类型&#xff1a; 一、四种攻击的定义 &#xff08;1&#xff09;唯密文攻击(COA, C…

PCIe驱动开发(2)— 第一个简单驱动编写和测试

PCIe驱动开发&#xff08;2&#xff09;— 第一个简单驱动编写和测试 一、前言 教程参考&#xff1a;02_实战部分_PCIE设备测试 教程参考&#xff1a;03_PCIe设备驱动源码解析 二、驱动编写 新建hello_pcie.c文件 touch hello_pcie.c然后编写内容如下所示&#xff1a; #i…

【持续集成_03课_Jenkins生成Allure报告及Sonar静态扫描】

1、 一、构建之后的配置 1、安装allure插件 安装好之后&#xff0c;可以在这里搜到已经安装的 2、配置allure的allure-commandline 正常配置&#xff0c;是要么在工具里配置&#xff0c;要么在系统里配置 allure-commandline是在工具里进行配置 两种方式进行配置 1&#xff…

原生JavaScript实现录屏功能

1. 前言 使用JavaScript实现浏览器中打开系统录屏功能 示例图: 2. 源码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><…

LabVIEW机器视觉系统中的图像畸变、校准和矫正

在机器视觉应用中&#xff0c;图像畸变、校准和矫正是确保图像准确性的关键步骤。LabVIEW作为一种强大的图像处理和分析工具&#xff0c;提供了一系列功能来处理这些问题。以下是对图像畸变、校准和矫正的详细介绍。 图像畸变 图像畸变 是指由于摄像镜头的光学特性或拍摄角度问…

算法重新刷题

基础算法 前缀和 一维前缀和 [USACO16JAN] Subsequences Summing to Sevens S - 洛谷 这一题主要是需要结合数学知识来求解&#xff0c; #include <iostream> #include <cstring> #include <cstdio> #include <algorithm>using namespace std;con…

进入防火墙Web管理页面(eNSP USG6000V)和管理员模块

1、进入防火墙Web管理页面 USG系列是华为提供的一款高端防火墙产品&#xff0c;其特点在于提供强大的安全防护能力和灵活的扩展性。 以eNSP中的USG6000为例&#xff1a; MGMT口&#xff08;web管理口&#xff09;&#xff1a;对应设备上的G0/0/0口&#xff0c;上面初始配有一…

实验六 图像的傅立叶变换

一&#xff0e;实验目的 1了解图像变换的意义和手段&#xff1b; 2熟悉傅立叶变换的基本性质&#xff1b; 3熟练掌握FFT变换方法及应用&#xff1b; 4通过实验了解二维频谱的分布特点&#xff1b; 5通过本实验掌握利用MATLAB编程实现数字图像的傅立叶变换。 6评价人眼对图…

第一周周日总结

题目总结 1.给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时…

公众号文章阅读20w+?你猜腾讯给了我多少钱?

前两天写的一篇文章&#xff0c; 《1000T的文件怎么能快速从南京传到北京&#xff1f;最佳方案你肯定想不到》 一不小心被平台推荐&#xff0c;阅读量居然达到了20w&#xff08;这篇收益在文章底部&#xff01;&#xff09;。 留言也是相当精彩 说来惭愧&#xff0c;这篇文章我…

【74LS163做24进制计数器】2021-11-19

缘由用74LS163做24进制计数器-其他-CSDN问答,仿真multisim两个74LS163芯片如何构成47进制计数器-吐槽问答-CSDN问答 参考74ls163中文资料汇总&#xff08;74ls163引脚图及功能_内部结构图及应用电路&#xff09; - 电子发烧友网

苍穹外卖 ...待更新

苍穹外卖 1、 阿里云OSS2、菜品分类查询 1、 阿里云OSS 工具类 package com.sky.utils;import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import lombok.AllArgsConstructor…

计算样本之间的相似度

文章目录 前言一、距离度量1.1 欧几里得距离&#xff08;Euclidean Distance&#xff09;1.2 曼哈顿距离&#xff08;Manhattan Distance&#xff09;1.3 切比雪夫距离&#xff08;Chebyshev Distance&#xff09;1.4 闵可夫斯基距离&#xff08;Minkowski Distance&#xff09…

docker容器技术、k8s的原理和常见命令、用k8s部署应用步骤

容器技术 容器借鉴了集装箱的概念&#xff0c;集装箱解决了什么问题呢&#xff1f;无论形状各异的货物&#xff0c;都可以装入集装箱&#xff0c;集装箱与集装箱之间不会互相影响。由于集装箱是标准化的&#xff0c;就可以把集装箱整齐摆放起来&#xff0c;装在一艘大船把他们…

浏览器插件利器-allWebPluginV2.0.0.14-stable版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX插件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持谷歌、火狐等浏…

MYSQL安装及环境配置

1.数据库下载 1.1 浏览器下载相应版本&#xff0c;如果相应版本不在此页&#xff0c;可点击Archives &#xff0c;然后选择相应版本 https://dev.mysql.com/downloads/mysql/ 1.2 放置指定目录&#xff0c;并将其解压 2.配置数据库环境变量 2.1 使用电脑win键 Q &#xff0c;…

51单片机STC89C52RC——16.1 五项四线步进电机

目的/效果 让步进电机 正向转90度&#xff0c;逆向转90度 一&#xff0c;STC单片机模块 二&#xff0c;步进电机 2.2 什么是步进电机&#xff1f; 步进电机可以理解为&#xff1a;是一个按照固定步幅运动的“小型机器”。它与普通电机不同点在于&#xff0c;普通电机可以持…