麦田物语第十三天

系列文章目录

麦田物语第十三天


文章目录

  • 系列文章目录
  • 一、实现根据物品详情显示 ItemTooltip
    • 1.ItemTooltips脚本编写
  • 二、制作 Player 的动画


一、实现根据物品详情显示 ItemTooltip

1.ItemTooltips脚本编写

首先创建Scripts->Inventory->UI->ItemTooltip脚本,然后将其挂载到ItemTooltip物体上,接着编写其变量并对这些变量进行拖拽赋值(所有的Text以及底部显示文字的物体)。因为拖拽赋值比在代码中的Awake获取Component更快。

变量编写如下:

	[SerializeField] private Text nameText;[SerializeField] private Text typeText;[SerializeField] private Text descriptionText;[SerializeField] private Text valueText;[SerializeField] private GameObject bottomPart;

接着我们观察ItemTooltip中需要的数据,名字,类型,物品描述以及物品的价值,这些都是在ItemDetails中已经存在的,那么我们需要一个函数将这个变量进行一个赋值,同时需要两个参数,分别是物品信息和物品所处位置的类型。然后对这些变量进行赋值,同时我们需要对价格的数值进行一个Switch选择,因为对于斧头等工具是不可以进行交易的,因为我们通过工具类型选择其出售的价格,如果物品类型为工具等,那么这个物品的价格显示栏就会消失,此时就需要我们的bottomPart变量了;同时我们规定当物品在背包中时就只会按照其出售价格显示,而不是其原本的价格。
接下来当我们鼠标移动到UI上面时就会调用这个方法并显示ItemTooltip即可。
所以我们需要在InventoryUI上进行变量的编写和赋值。
同时我们需要给每一个Slot_UI添加一个脚本ShowItemTooltip来显示,同时将这个脚本添加到预制体上。
那么现在就是ShowItemTooltip脚本的编写,由于我们编写的ItemTooltip脚本中的那个UI赋值方法需要ItemDetails,同时SlotUI脚本中刚好存在ItemDetails变量,那么我们为了避免这个脚本被滥用,需要添加一些限制[RequireComponent(typeof(SlotUI))]以确保添加ShowItemTooltip的脚本上必须有SlotUI脚本,在ShowItemTooltip脚本中首先需要进行变量的编写,一个我们需要拿到SlotUI,另一个需要拿到Inventory变量,因为这个才可以获得ItemDetails变量和InventoryUI中定义的ItemTooltip的UI,同时在Awake方法中赋值。
因为我们要实现鼠标移进Slot_UI时显示ItemTooltip,那么我们引入相关的接口:IPointerEnterHandler,IPointerExitHandler并生成相应的方法,首先在OnPointerEnter方法中,我们只可以对数量不为0的UI进行查询(物品数量为0时我们会将该UI设置为空),所以如果判断成功的话,我们将inventoryUI激活并且调用其赋值方法SetupTooltip(ItemTooltip脚本中)对其进行赋值,如果我们鼠标移进空格(else),那么将ItemTooltip取消激活;同时我们移出UI时,调用OnPointerExit方法也对该UI取消激活即可。
但是我们实现之后运行游戏发现我们的ItemTooltip会显示在屏幕中间而不是显示在鼠标移动的位置,这样不是很方便观察,因此我们需要更改ItemTooltip的位置使其显示在我们鼠标移动位置的上方。
结果虽然我们已经将现实的位置向上移动了,但是还是会遮挡下方的UI,原因是什么呢?
因为我们ItemTooltip的UI锚点位置位于正中间的位置,而我们这个操作需要将锚点的位置移到正下方即可,所以我们只需要将ItemTooltip的Povit的y值改为0就好了,所以我们在更改其位置前先设置该UI的锚点位置就完成了我们想要实现的功能。

ShowItemTooltip脚本如下:

namespace MFarm.Inventory
{[RequireComponent(typeof(SlotUI))]public class ShowItemTooltip : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler{private SlotUI slotUI;private InventoryUI inventoryUI => GetComponentInParent<InventoryUI>();private void Awake(){slotUI = GetComponent<SlotUI>();}public void OnPointerEnter(PointerEventData eventData){if (slotUI.itemAmount != 0){inventoryUI.itemTooltip.gameObject.SetActive(true);inventoryUI.itemTooltip

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

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

相关文章

深入浅出WebRTC—LossBasedBweV2

WebRTC 同时使用基于丢包的带宽估计算法和基于延迟的带宽估计算法那&#xff0c;能够实现更加全面和准确的带宽评估和控制。基于丢包的带宽估计算法主要依据网络中的丢包情况来动态调整带宽估计&#xff0c;以适应网络状况的变化。本文主要讲解最新 LossBasedBweV2 的实现。 1…

docker 安装MySQL 8.4.1

拉取MySQL镜像 docker pull mysql:8.4.1 查看本地镜像 docker images 通过镜像生成容器 docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 mysql:8.4.1 查看目录运行中的容器列表 docker ps 进入容器内简单测试 docker exec -it mysql /bin/b…

使用 Swagger 在 Golang 中进行 API 文档生成

Swagger 是一款强大的 API 文档生成工具&#xff0c;可以帮助开发者轻松创建、管理和展示 RESTful API 文档。在本文中&#xff0c;我们将介绍如何在 Golang 项目中使用 Swagger 来生成 API 文档。 官网地址 &#xff1a; gin-swagger 前提条件 Golang 开发环境&#xff08;…

Docker Desktop安装

0 Preface/Foreward 1 安装 1.1 运行docker安装包 安装完Docker Desktop后&#xff0c;运行Docker Desktop&#xff0c;出现WSL 2安装不完整情况&#xff0c;具体情况如下&#xff1a; 解决方法&#xff1a;旧版 WSL 的手动安装步骤 | Microsoft Learn 也可以直接下载新的安…

Java设计模式:从单例到观察者

设计模式是解决特定问题的通用解决方案。在Java编程中&#xff0c;设计模式可以帮助我们编写更灵活、可维护和可扩展的代码。本文将介绍几种常见的Java设计模式&#xff0c;包括单例、工厂、策略、装饰器和观察者模式。 1. 单例模式 单例模式是一种创建型模式&#xff0c;它确…

2023发卡商城源码,最新自助下单彩虹云商城系统免授权无后门源码

# 彩虹自助下单系统 > PHP版本: > 7.0.1 ____ * 去除所有授权验证 * 支持自定义说说接口 * 去除后台广告与更新 * 可自定义易支付接口 ____ >安装教程: > 1、上传源代码到空间或服务器&#xff0c;并确保权限可读写。 > 2、上传完成后&#xff0c;使用浏览器…

gcd之和(一维)

gcd之和 求 ∑ i 1 n gcd ⁡ ( n , i ) \sum_{i1}^{n}\gcd(n,i) ∑i1n​gcd(n,i)。 那么我们这一道题讲得详细一点。因为这一道题目的 n ≤ 1 0 9 n \leq 10^9 n≤109。这也就导致了一些算法是过不了的&#xff0c;那么我们就先从最简单的讲起&#xff1a; 对每一项来一遍 …

VulnHub:cengbox1

靶机下载地址&#xff0c;下载完成后&#xff0c;用VirtualBox打开靶机并修改网络为桥接即可搭建成功。 信息收集 主机发现和端口扫描 扫描攻击机&#xff08;192.168.31.218&#xff09;同网段存活主机确认目标机ip&#xff0c;并对目标机进行全面扫描。 nmap 192.168.31.…

springboot 项目整合 AI (文心一言)

百度智能云网址&#xff1a;https://cloud.baidu.com/?fromconsole 注册——个人认证——登录成功 第一步&#xff1a;点击千帆大模型平台 ​ 第二步&#xff1a;点击应用接入——创建应用 ​ 第三步&#xff1a;点击接口文档——API列表——可以点击指定模型进行查看调…

H3CNE(路由基础、直连路由与静态路由)

目录 6.1 直连路由 6.2 静态路由理解性实验 6.2.1 配置直连路由 6.2.2 配置静态路由 6.3 路由表的参数与比较 6.3.1 优先级的比较 6.3.2 开销的比较 6.4 路由器中的等价路由、浮动路由、默认路由 6.4.1 等价路由 6.4.2 浮动路由 6.4.3 默认路由(缺省路由) 6.1 直连路…

QT JSON使用实例

下面是一个使用Qt框架的示例代码&#xff0c;展示如何获取仪器的状态&#xff0c;将其打包成JSON格式&#xff0c;保存到当前目录下的JSON文件中&#xff0c;然后通过FTP发送该文件。 1. 准备工作 确保你已经安装了Qt&#xff0c;并创建一个新的Qt Console项目或Qt Widgets项目…

ChatGPT:ChatOpenAI 是什么?

ChatGPT&#xff1a;ChatOpenAI 是什么&#xff1f; ChatOpenAI 是 LangChain 库中的一个类&#xff0c;专门用于与 OpenAI 的 Chat 模型&#xff08;例如 GPT-4&#xff09;进行交互。LangChain 是一个用于构建自然语言处理应用的框架&#xff0c;它提供了与不同语言模型&…

Unity监听某个值是否改变,c#数值监听器

Unity监听某个值是否改变&#xff0c;c#数值监听器 功能监听某个值的变化&#xff0c;当监听到变化之后执行对应的注册事件。 需要创建一个监听器对应&#xff0c;每监听一个值就要创建一个监听器对象&#xff0c;监听器是泛型&#xff0c;需要填写监听的类型。 创建监听器完毕…

Python爬虫:代理ip电商数据实战

引言&#xff1a;数据访问管理引发的烦恼 作为一名Python博主&#xff0c;爬虫技能对于获取和分析数据至关重要&#xff0c;经常爬一下&#xff0c;有益身心健康嘛。爬虫技术对很多人来说&#xff0c;不仅仅是一种工具&#xff0c;更像是一种艺术&#xff0c;帮助我们从互联网…

Pytorch学习笔记——在GPU上进行训练

文章目录 1. 环境准备2. 导入必要库3. 加载数据集4. 定义简单的神经网络模型5. 检查和设置GPU设备6. 定义损失函数和优化器7. 训练模型8. 全部代码展示及运行结果 1. 环境准备 首先&#xff0c;确保PyTorch已经安装&#xff0c;且CUDA&#xff08;NVIDIA的并行计算平台和编程模…

org.springframework.context.annotation.ImportSelector的作用是什么?

org.springframework.context.annotation.ImportSelector 是 Spring 框架中一个非常有用的接口&#xff0c;它允许你根据条件动态地向 Spring 应用上下文中导入配置类。这对于开发模块化、可扩展且可配置的 Spring 应用来说非常有用。 如何使用 ImportSelector 创建 ImportSel…

Leetcode热题100 Day2

六、三数之和 这一题最关键的想法是把第二层嵌套和第三层嵌套合并为同一层嵌套&#xff0c;合并后即可使用两指针法。但是即使这样我在写的时候还是花了很多时间&#xff0c;一个是边界条件的处理&#xff08;尤其是连续有相同值的处理&#xff09;以及我发现了leetcode的编译…

用PyTorch从零开始编写DeepSeek-V2

DeepSeek-V2是一个强大的开源混合专家&#xff08;MoE&#xff09;语言模型&#xff0c;通过创新的Transformer架构实现了经济高效的训练和推理。该模型总共拥有2360亿参数&#xff0c;其中每个令牌激活21亿参数&#xff0c;支持最大128K令牌的上下文长度。 在开源模型中&…

java-双亲委派机制

Java虚拟机&#xff08;JVM&#xff09;中的类加载器&#xff08;Class Loader&#xff09;负责将类&#xff08;.class文件&#xff09;加载到JVM中&#xff0c;以便Java程序能够使用这些类。在JVM中&#xff0c;类加载器被组织成一种层次结构关系&#xff0c;这种层次结构关系…

vue3前端开发-小兔鲜项目-一些额外提醒的内容

vue3前端开发-小兔鲜项目-一些额外提醒的内容&#xff01;今天这一篇文章&#xff0c;是提醒大家&#xff0c;如果你正在学习小兔鲜这个前端项目&#xff0c;有些地方需要提醒大家&#xff0c;额外注意的地方。 第一个&#xff1a;就是大家在进入二级页面后&#xff0c;有一个分…