『功能项目』主角属性值显示【75】
本章项目成果展示
我们打开上一篇74穿戴装备的项目,

本章要做的事情是制作主角属性界面,实现在面板上显示主角的攻击力等数值
制作一个简易的主角界面(创建Image与Text显示即可)

创建一个空物体

重命名为PlayerInfo

在其子级下创建Text

重命名为AttackInfoText

设置文本组件

依次复制

重命名

创建脚本:

编写脚本:PlayerEquipInfoUI.cs

using UnityEngine;
using UnityEngine.UI;
public class PlayerEquipInfoUI : MonoBehaviour{GameManager gm;Text hpText; void Start(){gm = GameManager.Instance;hpText = transform.Find("PlayerInfo/HpText").GetComponent<Text>();UpdateUI();}void Update(){UpdateUI();}void UpdateUI(){hpText.text = gm.infoSys.playerHP.ToString();}
}
运行后实现血量的恒定值显示
复写脚本:PlayerEquipInfoUI.cs

using UnityEngine;
using UnityEngine.UI;
public class PlayerEquipInfoUI : MonoBehaviour{GameManager gm;Text hpText;Text mpText;Text attText;Text defText;void Start(){gm = GameManager.Instance;hpText = transform.Find("PlayerInfo/HpText").GetComponent<Text>();mpText = transform.Find("PlayerInfo/MpText").GetComponent<Text>();attText = transform.Find("PlayerInfo/AttackInfoText").GetComponent<Text>();defText = transform.Find("PlayerInfo/DefenseText").GetComponent<Text>();UpdateUI();}void Update(){UpdateUI();}void UpdateUI(){attText.text = gm.infoSys.attackValue.ToString();hpText.text = gm.infoSys.playerHP.ToString();mpText.text = gm.infoSys.playerMP.ToString();defText.text = gm.infoSys.defineValue.ToString(); }
}
运行项目

在UIMangaer.cs增加一个战斗力的字段

修改脚本:PlayerEquipInfoUI.cs

运行实现

接下来给主角属性面板增加一个按钮控制开关
复制一个按钮

修改脚本:UIManager.cs


修改扔到地面的报红
删除掉UISlot.cs脚本中的背包刷新代码

添加到打开背包BagExample.cs中

运行项目

接下来制作当穿上装备增加攻击力与战斗力以及数值变化的显示功能
创建Text文本重命名为EquipInfo

设置为隐藏

修改脚本:RightClickItem.cs

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
public class RightClickItem : MonoBehaviour, IPointerClickHandler{Image childImage;GameManager gm;GameObject currentCanvas;void Start(){gm = GameManager.Instance;childImage = transform.Find("Icon").GetComponent<Image>();currentCanvas = GameObject.Find("CurrentCanvas").gameObject;}public void OnPointerClick(PointerEventData eventData){if (eventData.button == PointerEventData.InputButton.Right){if (childImage.sprite != null && childImage.sprite.name == "sword_basic4_blue") {Transform weaponEquipPos = GameObject.FindGameObjectWithTag("WeaponEquipPos").transform;weaponEquipPos.gameObject.GetComponent<Image>().sprite = childImage.sprite;weaponEquipPos.gameObject.GetComponent<Image>().color = Color.white;weaponEquipPos.gameObject.transform.Find("Image").gameObject.SetActive(false);childImage.sprite = null;childImage.color = new Color(45f / 255f, 45f / 255f, 45f / 255f);childImage.GetComponent<RectTransform>().sizeDelta = new Vector2(90, 90);gm.infoSys.attackValue += 500;gm.infoSys.CombatValue += (int)(500 * 1.3f);currentCanvas.transform.Find("EquipInfo").GetComponent<Text>().color = Color.green;currentCanvas.transform.Find("EquipInfo").GetComponent<Text>().text = "战斗力上升" + (int)(500 * 1.3f);currentCanvas.transform.Find("EquipInfo").gameObject.SetActive(true);StartCoroutine(WaitForThreeEquipText());}}}IEnumerator WaitForThreeEquipText() {yield return new WaitForSeconds(2);currentCanvas.transform.Find("EquipInfo").gameObject.SetActive(false);}
}
运行项目 - 当穿戴装备时

修改脚本:RightClickWeaponBack.cs

using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class RightClickWeaponBack : MonoBehaviour, IPointerClickHandler{Image childImage;Sprite WeaponIconNormal;GameManager gm;GameObject currentCanvas;void Start(){gm = GameManager.Instance;WeaponIconNormal = Resources.Load<Sprite>("Prefabs/UGUIIcons/IndigoWeaponIcon_01");currentCanvas = GameObject.Find("CurrentCanvas").gameObject;}public void OnPointerClick(PointerEventData eventData){if (eventData.button == PointerEventData.InputButton.Right){if (transform.GetComponent<Image>().sprite == null)return;childImage = GameObject.FindWithTag("WeaponEquipPos").GetComponent<Image>();if (childImage.sprite != null){Transform uISlotPos = GameObject.FindGameObjectWithTag("UISlot").transform;if (uISlotPos.gameObject.GetComponent<Image>().sprite == null){uISlotPos.gameObject.GetComponent<Image>().sprite = childImage.sprite;uISlotPos.gameObject.GetComponent<Image>().color = Color.white;childImage.sprite = WeaponIconNormal;childImage.GetComponent<RectTransform>().sizeDelta = new Vector2(90, 90);gm.infoSys.attackValue -= 500;gm.infoSys.CombatValue -= (int)(500 * 1.3f);currentCanvas.transform.Find("EquipInfo").GetComponent<Text>().color = Color.red;currentCanvas.transform.Find("EquipInfo").GetComponent<Text>().text = "战斗力下降" + (int)(500 * 1.3f);currentCanvas.transform.Find("EquipInfo").gameObject.SetActive(true);StartCoroutine(WaitForThreeEquipText());}}}IEnumerator WaitForThreeEquipText(){yield return new WaitForSeconds(2);currentCanvas.transform.Find("EquipInfo").gameObject.SetActive(false);}}
}
运行项目 - 当脱下装备时

本章实现了主角属性界面的属性同步功能
接下来的文章内容:
1.3D模型动态投射UI
2.窗口可拖拽脚本
3.点击名称寻找地点功能
4.隐藏怪物的生成
5.怪物I攻击范围内的主动攻击
6.掉落坐骑蛋的获取
7.异步传送转换场景
以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。
具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》

【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)
https://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0&vd_source=547091a95b03acfa8e8a9e46ef499cd6
相关文章:
『功能项目』主角属性值显示【75】
本章项目成果展示 我们打开上一篇74穿戴装备的项目, 本章要做的事情是制作主角属性界面,实现在面板上显示主角的攻击力等数值 制作一个简易的主角界面(创建Image与Text显示即可) 创建一个空物体 重命名为PlayerInfo 在其子级下创…...
单片机嵌入式编程中常用技术点
Open CV,QT,Linux,多线程,网络编程,文件编程在单片机嵌入式编程中,这些技术在单片机嵌入式编程中的作用: 一、OpenCV 在单片机嵌入式编程中,虽然单片机的计算能力相对有限…...
【毕业论文+源码】基于ASP+NET的人事管理系统
引言 人事管理系统是针对企业内部人事管理设计,分角色实现对公司部门及各部门员工的增、删、改、查以及对员工考勤的管理。 编写目的: 在系统需求分析的基础上,对需求分析中产生的功能模块进行过程描述,设计功能模块的内部细节&…...
计算机毕业设计 校园志愿者管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
速通LLaMA2:《Llama 2: Open Foundation and Fine-Tuned Chat Models》全文解读
文章目录 概览LLaMA和LLaMA2的区别AbstractIntroductionPretrainingFine-tuning1. 概括2、Supervised Fine-Tuning(SFT)3、⭐Reinforcement Learning with Human Feedback(RLHF)🔺总览Training Objectives:…...
如何使用VM中win10搭建Hfish蜜罐(危险感知平台)。从下载到部署详细教程
得而不惜就该死。 -----古月方源 引言:最近跟一个老师做东西,叫我搞清楚蜜罐的搭建和一些底层逻辑,所以记录一下。 一、实验准备 (一)win10虚拟机 (若有需要可以后台私信) (二&…...
Rust: AES 加密算法库
在Rust中,进行AES加密通常会用到一些现有的库,因为Rust标准库中并不直接提供AES加密的API。一个非常流行的库是crypto-box或者更广泛使用的ring库,但ring库由于依赖问题有时可能难以编译,另一个常用的库是cryptography的Rust绑定&…...
计算机网络34——Windows内存管理
1、计算机体系结构 2、内存管理 分为连续分配管理和非连续分配管理 在块内存在的未使用空间叫内部碎片,在块外存在的未使用空间叫外部碎片 固定分区分配可能出现内部碎片,动态分区分配可能出现外部碎片 3、逻辑地址和实际地址的互相转换 4、缺页中断 …...
Redisson 总结
1. 基础使用 1.1 引入依赖 <dependencies><dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId></dependency> </dependencies>包含的依赖如下 1.2 配置文件 其实默认主机就…...
EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)
摘要 EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势,通过一系列高效的设计改进和搜索方法,实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受…...
文心智能体搭建步骤
通过使用文心智能体平台来创建智能体的过程。这种方法可以让没有编程经验的人也能快速构建智能体,降低了技 术门槛。以下是一些建议和心得: 1.选择合适的平台:文心智能体平台是一个优秀的选择,它提供了零代码和低代码的开发环境,极大地降低了…...
PHP安全
PHP伪协议: 一.【file://协议】 PHP.ini: file:// 协议在双off的情况下也可以正常使用; allow_url_fopen :off/on allow_url_include:off/on file:// 用于访问本地文件系统,在CTF中通常用来读取本地文…...
c++278函数指针
#define _CRT_SECURE_NO_WARNINGS #include<stdlib.h> #include<string.h> #include<stdio.h>//数组类型基本语法知识梳理 //定义一个数组类型 //int a[10];//定义一个指针数组类型//定义一个指向数组类型的指针 数组类型的指针void main() {int a[10];//a代…...
sklearn特征选取之SelectFromModel
sklearn.feature_selection.SelectFromModel 是一种基于模型的重要性权重进行特征选择的工具,允许我们根据学习器的权重或特征重要性自动选择特征。它通过从模型中提取特征的重要性来选择特征,常用于与那些具有 coef_ 或 feature_importances_ 属性的模型…...
vue一级、二级路由设计
一、一级路由设计 一级路由是指直接映射到应用程序中顶级页面或组件的路由。这些路由通常定义在Vue Router的配置中,作为应用程序导航结构的基础。 直接映射:一级路由直接映射到URL路径和Vue组件,没有嵌套关系。顶级导航:它们通…...
python爬虫:将知乎专栏文章转为pdf
欢迎关注本人的知乎主页~ 实现思路 用户输入专栏ID: 代码首先提示用户输入一个知乎专栏的ID,默认值为 c_1747690982282477569。输入的ID用于构建API请求的URL。 发送HTTP请求: 使用 requests.get() 向知乎API发送GET请求,获取指定…...
嵌入式笔记(入门系列2)
目录 宏函数 预处理器#include 内存泄漏 内存对齐 堆与栈 Malloc 和 New Inline 宏函数 宏函数,宏函数,实际上就是让宏像函数一样被使用。宏函数以函数形式的方式进行入参,但是返回结果是通过表达式求值得到。话说的抽象,我…...
并发编程多线程
1.线程和进程的区别? 进程是正在运行程序的实例,进程中包含了线程,每个线程执行不同的任务不同的进程使用不同的内存空间,在当前进程下的所有线程可以共享内存空间线程更轻量,线程上下文切换成本一般上要比进程上下文…...
【十八】MySQL 8.0 新特性
MySQL 8.0 新特性 目录 MySQL 8.0 新特性 概述 简述 1、数据字典 2、原子数据定义语句 3、升级过程 4、会话重用 5、安全和账户管理 6、资源管理 7、表加密管理 8、InnoDB增强功能 9、字符集支持 10、增强JSON功能 11、数据类型的支持 12、查询的优化 13、公用…...
巨潮股票爬虫逆向
目标网站 aHR0cDovL3dlYmFwaS5jbmluZm8uY29tLmNuLyMvSVBPTGlzdD9tYXJrZXQ9c3o 一、抓包分析 请求头参数加密 二、逆向分析 下xhr断点 参数生成位置 发现是AES加密,不过是混淆的,但并不影响咱们扣代码 文章仅提供技术交流学习,不可对目标服…...
在Node.js后端服务中集成Taotoken实现多模型异步调用的教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Node.js后端服务中集成Taotoken实现多模型异步调用的教程 对于需要在后端服务中调用大语言模型的Node.js开发者而言,…...
语义搜索实战:从关键词到向量检索
本文面向:想深入理解语义搜索实现原理的开发者。 预计阅读时间:10 分钟 关键词搜索已经够用了?试试搜"怎么解决数据库死锁"——你可能漏掉所有标题写"SQLite WAL mode"、"并发写入冲突"的笔记。语义搜索能跨越…...
RT-Thread启动流程与BSP移植实战:从内核启动到硬件适配
1. 项目概述:从启动到适配,深入RT-Thread内核如果你刚开始接触RT-Thread,或者正打算把它移植到一个新的硬件平台上,那么“启动流程”和“板级支持”这两个问题,几乎是你绕不开的坎。这不仅仅是两个孤立的技术点&#x…...
从信号处理到AI:卷积的含参积分本质,如何帮你理解PyTorch中的Conv1d层?
从信号处理到AI:卷积的含参积分本质,如何帮你理解PyTorch中的Conv1d层? 在信号处理领域,卷积操作早已是工程师们耳熟能详的工具。但当我们踏入深度学习的殿堂,面对PyTorch中的nn.Conv1d层时,是否曾疑惑过&a…...
3步打造智能设计转换桥梁:从Figma到Unity的无缝对接方案
3步打造智能设计转换桥梁:从Figma到Unity的无缝对接方案 【免费下载链接】UnityFigmaBridge Easily bring your Figma Documents, Components, Assets and Prototypes to Unity 项目地址: https://gitcode.com/gh_mirrors/un/UnityFigmaBridge 在现代游戏开发…...
51单片机定时器生成PWM波控制电机转速,从原理到代码调试全流程(基于STC89C52)
51单片机定时器生成PWM波控制电机转速:从寄存器配置到闭环调速实战 在嵌入式控制领域,PWM(脉冲宽度调制)技术如同精准的"电子油门",通过调节脉冲占空比实现对电机转速的精细控制。STC89C52RC这颗经典的51内核…...
RISC-V PMP物理内存保护:硬件级隔离机制与嵌入式系统实战配置
1. 项目概述:为什么我们需要物理内存保护?在嵌入式系统、实时操作系统乃至一些对可靠性要求极高的服务器场景里,系统崩溃往往不是由复杂的逻辑错误直接导致的,而是源于一些看似“低级”的内存访问越界。想象一下,你正在…...
人大金仓KingbaseES适配踩坑大全:MyBatis-Plus项目里那些MySQL语法不兼容的“坑”怎么填?
人大金仓KingbaseES适配实战:MyBatis-Plus项目MySQL语法迁移避坑指南 当企业级应用需要从MySQL迁移到国产数据库人大金仓KingbaseES时,开发者往往会遇到各种SQL语法不兼容的问题。作为基于PostgreSQL内核的数据库,KingbaseES在语法细节、函数…...
pdfjs 进阶:基于外部数据切片实现精准高亮与定位跳转
1. 理解PDF.js与外部数据切片的核心需求 在文档处理场景中,我们经常遇到这样的需求:后端已经将PDF内容切割成结构化的数据块(比如按章节、段落或语义单元划分),前端需要将这些数据块与PDF可视化内容精准关联。这种关联…...
高炉智变:12期实战带你玩转工业AI落地~系列文章11:可解释AI实践:SHAP+LIME打开高炉模型的“黑箱“
🎯 高炉智变11|可解释AI实践:SHAPLIME打开高炉模型的"黑箱" 📅 本文目录 一、前言:AI可解释性的重要性二、SHAP可解释性框架三、LIME局部解释方法四、高炉模型可解释性实践五、实战代码实现六、总结与预告 一…...
