当前位置: 首页 > news >正文

Unity类银河战士恶魔城学习总结(P129 Craft UI 合成面板UI)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/

本章节实现了合成面板的UI设置

UI_CraftWindow.cs

字段作用:

  1. UI 组件:

    • itemName / itemDescription / icon:显示装备名称、描述和图标。
    • craftButton:合成按钮,点击后执行合成逻辑。
    • materialImage:显示合成所需材料的图片和数量。
  2. 数据输入:

    • SetCraftWindow(ItemData_Equipment _data):传入装备数据用于更新窗口内容。

主要功能:

  1. 清空已有材料显示:

    • 将所有 materialImage 和对应文字的颜色设置为透明,重置 UI。
  2. 更新材料信息:

    • 遍历 craftingMaterials 列表,将材料图标和数量显示到对应 materialImage
  3. 更新装备信息:

    • 显示装备的图标、名称和描述。
  4. 绑定合成逻辑:

    • craftButton 添加点击事件,调用CanCraft() 检查并处理合成逻辑。
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;public class UI_CraftWindow : MonoBehaviour
{[SerializeField] private TextMeshProUGUI itemName;[SerializeField] private TextMeshProUGUI itemDescription;[SerializeField] private Image icon;[SerializeField] private Button craftButton;   [SerializeField] private Image[] materialImage;public void SetCraftWindow(ItemData_Equipment _data){for (int i = 0; i < materialImage.Length; i++){materialImage[i].color = Color.clear;materialImage[i].GetComponentInChildren<TextMeshProUGUI>().color = Color.clear;}for (int i = 0; i < _data.craftingMaterials.Count; i++){if(_data.craftingMaterials.Count > materialImage.Length)Debug.LogWarning("你拥有的材料比合成需要的材料多");materialImage[i].sprite = _data.craftingMaterials[i].data.icon;materialImage[i].color = Color.white;TextMeshProUGUI materialSlotText = materialImage[i].GetComponentInChildren<TextMeshProUGUI>();materialImage[i].GetComponentInChildren<TextMeshProUGUI>().text = _data.craftingMaterials[i].stackSize.ToString();materialImage[i].GetComponentInChildren<TextMeshProUGUI>().color = Color.white;}icon.sprite = _data.icon;itemName.text = _data.itemName;itemDescription.text = _data.GetDescription();craftButton.onClick.AddListener(() => Inventory.instance.CanCraft(_data,_data.craftingMaterials));}
}

UI_CraftList.cs

这段代码是用于管理合成装备界面的 Unity 脚本,核心功能包括动态生成合成槽列表、默认显示第一个装备详情,以及响应用户点击刷新列表:

  1. 字段作用:

    • craftSlotParent:合成槽的父物体,用于容纳动态生成的合成槽。
    • craftSlotPrefab:合成槽的预制体。
    • craftEquipment:装备数据列表。
  2. 主要方法:

    • SetupCraftList():清空旧的合成槽并根据 craftEquipment 数据生成新的合成槽。
    • OnPointerDown():用户点击时刷新合成槽列表。
    • SetupDefaultCraftWindow():初始化并显示第一个装备的详情。
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class UI_CraftList : MonoBehaviour, IPointerDownHandler
{[SerializeField] private Transform craftSlotParent;//合成槽父物体[SerializeField] private GameObject craftSlotPrefab;//合成槽预制体[SerializeField] private List<ItemData_Equipment> craftEquipment;//合成装备列表void Start(){transform.parent.GetChild(0).GetComponent<UI_CraftList>().SetupCraftList();SetupDefaultCraftWindow();}public void SetupCraftList(){for (int i = 0; i < craftSlotParent.childCount; i++){Destroy(craftSlotParent.GetChild(i).gameObject);}for (int i = 0; i < craftEquipment.Count; i++){GameObject newSlot = Instantiate(craftSlotPrefab, craftSlotParent);newSlot.GetComponent<UI_CraftSlot>().SetupCraftSlot(craftEquipment[i]);}}public void OnPointerDown(PointerEventData eventData){SetupCraftList();}public void SetupDefaultCraftWindow(){if (craftEquipment[0]!= null)GetComponentInParent<UI>().craftWindow.SetCraftWindow(craftEquipment[0]);}
}

UI_CraftSlot.cs

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;//2024年11月15日
//函数放在新的创建Craft panel的itemSlot里
public class UI_CraftSlot : UI_ItemSlot//继承物品槽UI
{protected override void Start(){base.Start();}public void SetupCraftSlot(ItemData_Equipment _data)//设置合成槽{if (_data == null)return;item.data = _data;itemImage.sprite = _data.icon;//设置图标itemText.text = _data.itemName;//设置名字if (itemText.text.Length > 12)itemText.fontSize = itemText.fontSize * .7f;elseitemText.fontSize = 24;}private void OnValidate(){}public override void OnPointerDown(PointerEventData eventData){//ItemData_Equipment craftData = item.data as ItemData_Equipment;//Inventory.instance.CanCraft(craftData, craftData.craftingMaterials);//检查是否可以制作该物品ui.craftWindow.SetCraftWindow(item.data as ItemData_Equipment);//设置合成窗口}
}

相关文章:

Unity类银河战士恶魔城学习总结(P129 Craft UI 合成面板UI)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了合成面板的UI设置 UI_CraftWindow.cs 字段作用&#xff1a; UI 组件&#xff1a; itemName / itemDescription / icon&#…...

linux基础笔试练习题笔记(2)

在Linux系统上&#xff0c;下面那个命令不可以用来查看文件内容&#xff08;&#xff09; A.cat B.ls C.less D.more 答案解析&#xff1a; cat命令用用于一次性显示文件的所有内容&#xff0c;一般文件内容较多时一般会使用more或less命令。 more:分页显示文件内容&#xf…...

Android OpenGL ES详解——glTexImage2D方法

glTexImage2D是OpenGL中的一个重要函数&#xff0c;其作用是为2D纹理分配显存并上传数据。以下是关于glTexImage2D作用的详细解释&#xff1a; 一、函数原型 在OpenGL ES 2.0中&#xff0c;glTexImage2D的函数原型如下&#xff1a; GL_APICALL void GL_APIENTRY glTexImage2…...

Redisson 中开启看门狗(watchdog)机制

在分布式系统中&#xff0c;分布式锁是一种常用的技术手段&#xff0c;用于确保在多个节点同时访问共享资源时的一致性和正确性。Redisson 是一个强大的 Java 分布式框架&#xff0c;它提供了丰富的分布式数据结构和服务&#xff0c;其中开启看门狗&#xff08;watchdog&#x…...

【JSOO】设计模式

单例模式工厂模式状态模式观察者模式桥接模式 设计模式&#xff08;是一种通过经验中总结出来的经过反复验证能够解决一类通用问题的可以反复重用的就可称它为模式&#xff0c;否则只能称为功能模块&#xff09;&#xff1b;模式&#xff1a;把解决问题的方法抽取出来&#xff…...

本草纲目数字化:Spring Boot在中药实验管理中的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理中药实验管理系统的相关信息成为必然。开发…...

java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程

文章目录 PC Register堆虚拟机栈方法区(Metaspace元空间双亲委派机制类加载器 类装载的执行过程 PC Register 程序计数器&#xff08;Program Counter Register&#xff09;是 Java 虚拟机&#xff08;JVM&#xff09;中的一个组件&#xff0c;它在 JVM 的内存模型中扮演着非常…...

重构Action-cli前端脚手架

一、概述 最近一年&#xff0c;为了满足公司业务开发&#xff0c;解决重复搭建项目繁琐过程&#xff0c;自己开发了一个前端脚手架&#xff0c;并发布到npm。随着时间的推移&#xff0c;发现之前的版本存在很多问题&#xff0c;有些功能做不到位&#xff0c;而且代码也不是很规…...

华为USG5500防火墙配置NAT

实验要求&#xff1a; 1.按照拓扑图部署网络环境&#xff0c;使用USG5500防火墙&#xff0c;将防火墙接口加入相应的区域&#xff0c;添加区域访问规则使内网trust区域可以访问DMZ区域的web服务器和untrust区域的web服务器。 2.在防火墙上配置easy-ip&#xff0c;使trust区域…...

【大数据学习 | HBASE高级】hive操作hbase

一般在查询hbase的数据的时候我们可以直接使用hbase的命令行或者是api进行查询就行了&#xff0c;但是在日常的计算过程中我们一般都不是为了查询&#xff0c;都是在查询的基础上进行二次计算&#xff0c;所以使用hbase的命令是没有办法进行数据计算的&#xff0c;并且对于hbas…...

集群聊天服务器(9)一对一聊天功能

目录 一对一聊天离线消息服务器异常处理 一对一聊天 先新添一个消息码 在业务层增加该业务 没有绑定事件处理器的话消息会派发不出去 聊天其实是服务器做一个中转 现在同时登录两个账号 收到了聊天信息 再回复一下 离线消息 声明中提供接口和方法 张三对离线的李…...

《FreeRTOS列表和列表项篇》

FreeRTOS列表和列表项 1. 什么是列表和列表项&#xff1f;1.1 列表list1.2 列表项list item 2. 列表和列表项的初始化2.1 列表的初始化2.2 列表项的初始化 3. 列表项的插入4. 列表项末尾插入5. 列表项的删除6. 列表的遍历 列表和列表项是FreeRTOS的一个数据结构&#xff0c;是F…...

C++:哈希拓展-位图

目录 一.问题导入 二.什么是位图? 2.1如何确定目标数在哪个比特位? 2.2如何存放高低位 2.3位图模拟代码实现 2.3.1如何标记一个数 2.3.2如何重置标记 2.3.3如何检查一个数是否被标记 整体代码实现 标准库的Bitset 库中的bitset的缺陷 简单应用 一.问题导入 这道…...

【数据结构与算法】查找

文章目录 一.查找二.线性结构的查找2.1顺序查找2.2折半查找2.3分块查找 三.树型结构的查找3.1二叉排序树1.定义2.二叉排序树的常见操作3.性能分析 3.2平衡二叉树1.定义2.平衡二叉树的常见操作3.性能分析 3.3B树1.定义2.B树的相关操作 3.4B树1.定义2.B树与B树的比较 四.散列表1.…...

从零开始学习 sg200x 多核开发之 milkv-duo256 编译运行 sophpi

sophpi 是 算能官方针对 sg200x 系列的 SDK 仓库 https://github.com/sophgo/sophpi &#xff0c;支持 cv180x、cv81x、sg200x 系列的芯片。 SG2002 简介 SG2002 是面向边缘智能监控 IP 摄像机、智能猫眼门锁、可视门铃、居家智能等多项产品领域而推出的高性能、低功耗芯片&a…...

LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143725947 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 LLaMA-…...

基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…...

深入浅出《钉钉AI》产品体验报告

1. 引言 随着人工智能技术的迅猛发展&#xff0c;企业协同办公领域迎来了新的变革。钉钉作为阿里巴巴集团旗下的企业级通讯与协同办公平台&#xff0c;推出了钉钉AI助理&#xff0c;旨在提高工作效率&#xff0c;优化用户体验。本报告将对钉钉AI助理进行全面的产品体验分析&am…...

2020年计挑赛往届真题(C++)

因为17号要开赛了&#xff0c;甚至是用云端编辑器&#xff0c;debuff拉满&#xff0c;只能临时抱佛脚了 各个选择题的选择项我就不标出来了&#xff0c;默认ABCD排&#xff0c;手打太麻烦了 目录 单选题&#xff1a; 1.阅读以下语句:double m0;for(int i3;i>0;i--)m1/i;…...

ES6进阶知识二

一、promise方法的案例 Promise对象通过new Promise()语法创建&#xff0c;它接受一个函数作为参数&#xff0c;该函数接受两个参数&#xff1a;resolve和reject。resolve表示异步操作成功&#xff0c;reject表示异步操作失败。 案例&#xff1a;异步加载图片 const loadIma…...

大语言模型通用能力排行榜(2024年10月8日更新)

数据来源SuperCLUE 榜单数据为通用能力排行榜 排名 模型名称 机构 总分 理科 文科 Hard 使用方式 发布日期 - o1-preview OpenAI 75.85 86.07 76.6 64.89 API 2024年11月8日 - Claude 3.5 Sonnet&#xff08;20241022&#xff09; Anthropic 70.88 82.4…...

第六节、Docker 方式部署指南 github 上项目 mkdocs-material

一、简介 MkDocs 可以同时编译多个 markdown 文件,形成书籍一样的文件。有多种主题供你选择,很适合项目使用。 MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档。文档源文件在 Markdown 编写,使用单个 YAML 配置文件配置。 MkDocs—markdown项目文档工具,…...

【MySQL】MySQL中的函数之JSON_REPLACE

在 MySQL 中&#xff0c;JSON_REPLACE() 函数用于在 JSON 文档中替换现有的值。如果指定的路径不存在&#xff0c;则 JSON_REPLACE() 不会修改 JSON 文档。如果需要添加新的键值对&#xff0c;可以使用 JSON_SET() 函数。 基本语法 JSON_REPLACE(json_doc, path, val[, path,…...

【大数据学习 | HBASE高级】hbase的API操作

首先引入hbase的依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>2.4.13</version></dependency><dependency><groupId>org.slf4j<…...

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C(Qt)软件调试—内存泄漏分析工具MTuner &#xff08;25&#xff09; 文章目录 C(Qt)软件调试---内存泄漏分析工具MTuner &#xff08;25&#xff09;[toc]1、概述&#x1f41c;2、下载MTuner&#x1fab2;3、使用MTuner分析qt程序内存泄漏&#x1f9a7;4、相关地址&#x1f41…...

python核心语法

目录 核⼼语法第⼀节 变量0.变量名规则1.下⾯这些都是不合法的变量名2.关键字3.变量赋值4.变量的销毁 第⼆节 数据类型0.数值1.字符串2.布尔值(boolean, bool)3.空值 None 核⼼语法 第⼀节 变量 变量的定义变量就是可变的量&#xff0c;对于⼀些有可能会经常变化的数据&#…...

MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究

全文链接&#xff1a;https://tecdat.cn/?p38258 在语音处理领域&#xff0c;对语音情感的分类是一个重要的研究方向。本文将介绍如何通过结合二维卷积神经网络&#xff08;2 - D CNN&#xff09;和长短期记忆网络&#xff08;LSTM&#xff09;构建一个用于语音分类任务的网络…...

智能网页内容截图工具:AI助力内容提取与可视化

我们每天都会接触到大量的网页内容。然而&#xff0c;如何从这些内容中快速提取关键信息&#xff0c;并有效地进行整理和分享&#xff0c;一直是困扰我们的问题。本文将介绍一款我近期完成的基于AI技术的智能网页内容截图工具&#xff0c;它能够自动分析网页内容&#xff0c;截…...

Axure设计之文本编辑器制作教程

文本编辑器是一个功能强大的工具&#xff0c;允许用户在图形界面中创建和编辑文本的格式和布局&#xff0c;如字体样式、大小、颜色、对齐方式等&#xff0c;在Web端实际项目中&#xff0c;文本编辑器的使用非常频繁。以下是在Axure中模拟web端富文本编辑器&#xff0c;来制作文…...

【MyBatis源码】深入分析TypeHandler原理和源码

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 原始 JDBC 存在的问题自定义 TypeHandler 实现TypeHandler详解BaseTypeHandler类TypeReference类型参考器43个类型处理器类型注册表&a…...

日本做暧小视频在线观看网站/爱站网关键词挖掘工具

导读 我附近有一家热闹的大型超市&#xff0c;每次结账队伍都比较长&#xff0c;15人左右&#xff0c;然后你会看到收银台旁立着这么一个牌子&#xff1a; 但是看似人性化的安排&#xff0c;却没有发挥作用&#xff0c;为什么呢&#xff1f; 原因这个牌子的设计者&#xff0c…...

wordpress 视频展示/网站关键词如何优化上首页

1.存储结构&#xff1a;数据库database 表table 数据data;2.SQL(Structured Query Language&#xff0c;结构化查询语言)语言&#xff1a;和数据库交互的语言&#xff0c;进行数据库管理的语言。库的操作3.查询所有数据库&#xff1a;show databases;4.创建数据库 create …...

网站中图片中间是加号怎么做/免费文件外链网站

给axios配置公共请求地址 给axios把各个请求都需要使用的相同的根地址做统一配置&#xff0c;使得相同代码只维护一份&#xff0c;提升开发速度。 语法&#xff1a; axios.defaults.baseURL 公共根地址把axios配置成为vue实例成员 在Vue的大环境中不要直接使用axios&#…...

哪里有学习做网站的/1688的网站特色

2016-12-12 11:57:12使用ajax的开发项目过程中&#xff0c;经常需要将json格式的字符串返回到前端&#xff0c;前端解析成js对象(JSON )。如果直接以json的格式返回则方便很多&#xff0c;有时候通过后台直接写到页面中则会以字符串的方式存在&#xff0c;那么就用到了将字符串…...

网站动态维护客服/google play商店

基于在Centos7服务器上使用 yum 安装MySQL5.7到默认路径 在修改文件存储位置的时候&#xff0c;折腾了一番没有将成功将datadir修改为我想要的位置 我决定再尝试一下通过编译源码来自定义安装&#xff1a; 首先下载MySQL5.7的源码文件 https://dev.mysql.com/downloads/mysql/5…...

网站底部特效/长沙正规seo优化价格

自定义 ASP.NET UpdatePanel 控件的错误处理.NET Framework 4 其他版本 此主题尚未评级 - 评价此主题 如果在 UpdatePanel 控件中更新部分页时发生错误&#xff0c;则默认行为是显示带有错误消息的浏览器消息框。 本教程将向您演示如何自定义向用户显示错误的方式以及如何自定义…...