【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.mfbz.cn/a/782145.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法重新刷题

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

java花店管理系统eclipse开发mysql数据库

1 绪论 1.1 系统开发目的 随着人们物质生活水平和经济水平的不断提高&#xff0c;室内绿化布置、家庭园艺装饰、礼仪鲜花等日益受到重视和青睐&#xff0c;以及送鲜花给亲朋好友来表达自己的情谊。传统的花店对于信息的管理的主要方式是基于文本、表格等纸质手工处理&#xf…

【经验篇】Spring Data JPA开启批量更新时乐观锁失效问题

乐观锁机制 什么是乐观锁&#xff1f; 乐观锁的基本思想是&#xff0c;认为在大多数情况下&#xff0c;数据访问不会导致冲突。因此&#xff0c;乐观锁允许多个事务同时读取和修改相同的数据&#xff0c;而不进行显式的锁定。在提交事务之前&#xff0c;会检查是否有其他事务…

mac M1安装 VSCode

最近在学黑马程序员Java最新AI若依框架项目开发&#xff0c;里面前端用的是Visual Studio Code 所以我也就下载安装了一下&#xff0c;系统是M1芯片的&#xff0c;安装过程还是有点坑的写下来大家注意一下 1.在appstore中下载 2.在系统终端中输入 clang 显示如下图 那么在终端输…

【Linux进程】命令行参数 环境变量(详解)

目录 前言 1. 命令行参数 什么是命令行参数? 2. 环境变量 常见的环境变量 如何修改环境变量? 获取环境变量 环境变量的组织方式 拓展问题 导入环境变量 3. 本地变量* 总结 前言 在使用Linux指令的时候, 都是指令后边根命令行参数, 每个指令本质都是一个一个的可执行程…

JAVA集合框架、CAS、AQS

目录 一、java 的集合框架有哪些? 二、说-下 ArrayList 和 LinkedList? 三、HashSet和TreeSet的区别? 四、HashMap 的数据结构是什么? 五、CAS机制 六、AQS理解 一、java 的集合框架有哪些? Collection 是 Java 集合框架中的一个根接口&#xff0c;位于 java.util 包中。它…

亲密数对C++函数

自定义函数 #include<bits/stdc.h> using namespace std; //求n的因子和自定义函数 int yinzihe(int n){//使用2~sqrt(n)成对求解因子和int r0,i;//变量 r 初始值为0&#xff0c;因为要存放因子和for(i2;i<sqrt(n);i) {//回顾sqrt()课程//如果 i 是 n 的因子&#xf…

微笑背后的秘密:理解自闭症儿童的面部表情控制

在星贝育园自闭症儿童康复学校&#xff0c;我们常常遇到家长们提出的一个有趣而引人深思的问题&#xff1a;“为什么我的孩子似乎控制不住面部表情&#xff0c;尤其是频繁地笑&#xff1f;”这个问题背后&#xff0c;隐藏着自闭症谱系障碍&#xff08;ASD&#xff09;儿童独特的…

Caffeinated for Mac v2.0.6 Mac防休眠应用 兼容 M1/M2/M3

Caffeinated 可以防止您的 Mac 进入休眠状态、屏幕变暗或者启动屏幕保护。 应用介绍 您的屏幕是否总是在您不希望的时候变暗&#xff1f;那么Caffeinated就是您解决这个大麻烦的最好工具啦。Caffeinated是在Caffeine这个非常便捷、有用的工具的基础上开发而来的。Caffeinated…

20240707 每日AI必读资讯

&#x1f9e0;中国生成式AI专利数量超过美国 6 倍 - 中国在2014年至2023年期间申请的生成式AI专利数量达到38210个&#xff0c;超过了美国的6倍。 - 腾讯、平安保险集团和百度是GenAI专利数量最多的中国公司。 - 中国的顶级学术机构和技术生态为生成式AI的发展提供了强大支持…

算法简介:什么是算法?——定义、历史与应用详解

引言 在现代计算机科学中&#xff0c;算法是一个核心概念。无论是编程还是数据分析&#xff0c;算法都扮演着至关重要的角色。在这篇博客中&#xff0c;我们将深入探讨算法的定义、历史背景以及它在计算机科学中的地位和实际应用。 什么是算法&#xff1f; 算法是解决特定问题…

DHCP的原理及配置

目录 一、了解DHCP服务 1.什么是DHCP 1.1DHCP广播 2.使用DHCP的好处 2.1为什么使用DHCP 3.DHCP的模式与分配方式 3.1分配方式 3.2模式 二、DHCP工作原理 1.四次回话 2.重新登录 3.更新租约 4.扩展 三、安装DHCP服务 四、DHCP局部配置并且测试 五、使用…

简介空间复杂度

我们承接上一篇博客。我们写了时间复杂度之后&#xff0c;我们就要来介绍一下另一个相关复杂度了。空间复杂度。我觉得大家应该对空间复杂度认识可能比较少一些。我就是这样&#xff0c;我很少看见题目中有明确要求过空间复杂度的。但确实有这个是我们不可忽视的&#xff0c;所…

在门店里造绿色氧吧!康养行业也这么卷了?

拼啥不如拼健康&#xff0c;现在的人算是活明白了&#xff0c;不但中老年人这样想&#xff0c;年轻人也这样干。你可能不知道&#xff0c;现在众多健康养生门店&#xff0c;逐渐成了年轻人“组团养生”的好去处&#xff0c;也是他们吃喝玩乐之外的新兴消费趋势。 而在看得见的…

无需服务器,浏览器跑700+AI模型?!【送源码】

Transformers.js 是一个创新的网络机器学习库&#xff0c;它将先进的 Transformer 模型直接带入浏览器&#xff0c;无需服务器端支持。这个库与 Hugging Face 的 Python transformers 库功能对等&#xff0c;提供相似的 API 接口来运行预训练模型&#xff0c;涵盖了自然语言处理…

Java引用的4种类型:强、软、弱、虚

在Java中&#xff0c;引用的概念不仅限于强引用&#xff0c;还包括软引用、弱引用和虚引用&#xff08;也称为幻影引用&#xff09;。这些引用类型主要用于不同的内存管理策略&#xff0c;尤其是在垃圾收集过程中。以下是对这四种引用类型的详细解释&#xff1a; 1. 强引用&am…

【实践分享】深度学习远程连接GPU

目录 前言 一、创建实例 二、上传文件 三、服务器上传 四、运行代码文件 前言 1、使用平台&#xff1a;恒源云 2、教程总结自B站大佬Larry同学发布的教程视频 一、创建实例 通俗&#xff1a;租用一台临时的电脑&#xff0c;电脑可自选GPU型号等&#xff0c;按照项目需…

品质至上!中国星坤连接器的发展之道!

在电子连接技术领域&#xff0c;中国星坤以其卓越的创新能力和对品质的不懈追求&#xff0c;赢得了业界的广泛认可。凭借在高精度连接器设计和制造上的领先地位&#xff0c;星坤不仅获得了多项实用新型专利&#xff0c;更通过一系列国际质量管理体系认证&#xff0c;彰显了其产…

【原理+使用】DeepCache: Accelerating Diffusion Models for Free

论文&#xff1a;arxiv.org/pdf/2312.00858 代码&#xff1a;horseee/DeepCache: [CVPR 2024] DeepCache: Accelerating Diffusion Models for Free (github.com) 介绍 DeepCache是一种新颖的无训练且几乎无损的范式&#xff0c;从模型架构的角度加速了扩散模型。DeepCache利…

树(相关知识点)

目录 结点的度&#xff1a;某一个结点所含有字数的个数 叶节点&#xff1a;最后一个结点 非终端节点:不是叶结点 兄弟结点&#xff1a;亲兄弟结点 树的度&#xff1a;最大节点的度 层次&#xff1a;根为第一层&#xff0c;根的子结点为第二层&#xff0c;以此类推 森林&am…