【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.pswp.cn/web/41574.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41574.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41574.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計一個會員卡系統

會員卡系統在現代商業環境中是一個重要的客戶關系管理工具。通過會員卡系統&#xff0c;企業可以有效地增加客戶粘性&#xff0c;提高客戶滿意度&#xff0c;進而提升銷售額。本文將詳細討論如何設計一個全面的會員卡系統&#xff0c;包括會員卡的類型、權益設計、續費規則、升…

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…

06pymysql

【一】pymysql 1.我們可以利用pymysql在python中操作數據庫 原理是pyMySQL-->是封裝好的執行subprocess鏈接數據庫執行數據庫命令的模塊 官網&#xff1a;https://zetcode.com/python/pymysql/ 【二】使用示例 import pymysql from pymysql.cursors import DictCursor ?…

進入防火墻Web管理頁面(eNSP USG6000V)和管理員模塊

1、進入防火墻Web管理頁面 USG系列是華為提供的一款高端防火墻產品&#xff0c;其特點在于提供強大的安全防護能力和靈活的擴展性。 以eNSP中的USG6000為例&#xff1a; MGMT口&#xff08;web管理口&#xff09;&#xff1a;對應設備上的G0/0/0口&#xff0c;上面初始配有一…

如何在Spring Boot中實現實時通知

如何在Spring Boot中實現實時通知 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將討論如何在Spring Boot應用中實現實時通知功能&#xff0c;這在現代…

Java的awt和swing的區別

AWT&#xff08;Abstract Window Toolkit&#xff09;和Swing都是Java中用于創建圖形用戶界面&#xff08;GUI&#xff09;的工具包&#xff0c;但它們之間存在一些關鍵的區別。下面我將通過具體的例子來說明這些區別&#xff1a; 1. 跨平臺性能 AWT&#xff1a; AWT是基于本…

實驗六 圖像的傅立葉變換

一&#xff0e;實驗目的 1了解圖像變換的意義和手段&#xff1b; 2熟悉傅立葉變換的基本性質&#xff1b; 3熟練掌握FFT變換方法及應用&#xff1b; 4通過實驗了解二維頻譜的分布特點&#xff1b; 5通過本實驗掌握利用MATLAB編程實現數字圖像的傅立葉變換。 6評價人眼對圖…

LeetCode 每日一題 2024/7/1-2024/7/7

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 7/1 2065. 最大化一張圖中的路徑價值7/2 3115. 質數的最大距離7/3 3099. 哈沙德數7/4 3086. 拾起 K 個 1 需要的最少行動次數7/5 3033. 修改矩陣7/6 3101. 交替子數組計數7…

第一周周日總結

題目總結 1.給你一個整數數組 hours&#xff0c;表示以 小時 為單位的時間&#xff0c;返回一個整數&#xff0c;表示滿足 i < j 且 hours[i] hours[j] 構成 整天 的下標對 i, j 的數目。 整天 定義為時間持續時間是 24 小時的 整數倍 。 例如&#xff0c;1 天是 24 小時…

C# MathNet

Vector使用 Build.Dense 創建列向量:列向量轉行向量&#xff08;行矩陣&#xff09;:使用 DenseOfArray 方法:使用 PointwiseMultiply 進行向量元素級乘法:計算向量的點積&#xff08;內積&#xff09;&#xff1a;訪問向量的特定元素&#xff1a;遍歷向量中的所有元素&#xf…

公眾號文章閱讀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; - 電子發燒友網