【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏9(附项目源码)

本节最终效果演示

在这里插入图片描述

文章目录

  • 本节最终效果演示
  • 系列目录
  • 前言
  • 回收物品
    • 素材
    • 绘制UI
    • 代码控制垃圾桶回收功能
    • 效果
  • 源码
  • 完结

系列目录

前言

欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中,我们将探索如何制作一个类似于七日杀和森林的生存游戏。

本篇内容会比较多,我会分几篇来实现,感兴趣的可以关注一下,以免错过内容更新。

本节主要实现了垃圾桶回收物品的功能。

回收物品

素材

在这里插入图片描述

在这里插入图片描述

绘制UI

垃圾桶UI
在这里插入图片描述
提示UI
在这里插入图片描述

代码控制垃圾桶回收功能

修改InventoryItem,新增变量

public class TrashSlot : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler
{public GameObject trashAlertUI; // 垃圾桶警告界面private TextMeshProUGUI textToModify; // 警告界面中的文本组件public Sprite trash_closed; // 关闭状态的垃圾桶图片public Sprite trash_opened; // 打开状态的垃圾桶图片private Image imageComponent; // 垃圾桶的图片组件private Button YesBTN; // 确认按钮private Button NoBTN; // 取消按钮// 被拖拽的物品private GameObject draggedItem{get { return DragDrop.itemBeingDragged; }} GameObject itemToBeDeleted;public string itemName{get{string name = itemToBeDeleted.name;string toRemove = "(Clone)";string result = name.Replace(toRemove, "");return result;}}void Start(){imageComponent = transform.Find("Image").GetComponent<Image>();textToModify = trashAlertUI.transform.Find("问题").GetComponent<TextMeshProUGUI>();YesBTN = trashAlertUI.transform.Find("确认").GetComponent<Button>();YesBTN.onClick.AddListener(delegate { DeleteItem(); });NoBTN = trashAlertUI.transform.Find("取消").GetComponent<Button>();NoBTN.onClick.AddListener(delegate { CancelDeletion(); });}public void OnDrop(PointerEventData eventData){if (draggedItem.GetComponent<InventoryItem>().isTrashable == true) // 如果被拖拽的物品可被丢弃{itemToBeDeleted = draggedItem.gameObject; // 设置要删除的物品为被拖拽的物品StartCoroutine(notifyBeforeDeletion()); // 开始删除前的警告流程}}IEnumerator notifyBeforeDeletion(){trashAlertUI.SetActive(true); // 显示警告界面textToModify.text = "确认丢弃 " + itemName + "?"; // 设置警告文本yield return new WaitForSeconds(1f);}private void CancelDeletion(){imageComponent.sprite = trash_closed; // 设置垃圾桶图片为关闭状态trashAlertUI.SetActive(false); // 隐藏警告界面}private void DeleteItem(){imageComponent.sprite = trash_closed; // 设置垃圾桶图片为关闭状态Destroy(itemToBeDeleted.gameObject); // 立即销毁要删除的物品InventorySystem.Instance.ReCalculeList(); // 重新计算物品列表CraftingSystem.Instance.RefreshNeededItems(); // 刷新需要的物品trashAlertUI.SetActive(false); // 隐藏警告界面}public void OnPointerEnter(PointerEventData eventData){if (draggedItem != null && draggedItem.GetComponent<InventoryItem>().isTrashable == true) // 如果有被拖拽的物品且可被丢弃{imageComponent.sprite = trash_opened; // 设置垃圾桶图片为打开状态}}public void OnPointerExit(PointerEventData eventData){if (draggedItem != null && draggedItem.GetComponent<InventoryItem>().isTrashable == true) // 如果有被拖拽的物品且可被丢弃{imageComponent.sprite = trash_closed; // 设置垃圾桶图片为关闭状态}}
}

挂载脚本,配置参数
在这里插入图片描述
这里测试,勾选石头和树枝为可回收物品,并可以同步修改物品功能描述
在这里插入图片描述

效果

在这里插入图片描述

源码

源码不出意外的话我会放在最后一节

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

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

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

相关文章

低成本高效益,电子画册才是品牌的重要选择

​随着互联网的普及和数字化技术的进步&#xff0c;电子画册已成为许多品牌的重要选择。与传统印刷画册相比&#xff0c;电子画册具有低成本、高效益的优点&#xff0c;成为品牌宣传的新趋势。 具体来说&#xff0c;电子画册可以通过在线平台或移动设备轻松查看&#xff0c;无需…

【Spring连载】使用Spring Data访问Redis(五)----Redis Cache

【Spring连载】使用Spring Data访问Redis&#xff08;五&#xff09;----Redis Cache 一、Redis Cache 过期1.1 Time-To-Live (TTL) 过期1.2 Time-To-Idle (TTI) 过期 Spring Data Redis在org.springframework.data.redis.cache包中提供了Spring框架缓存抽象&#xff08;Cache …

logback自定义生成DB日志(java环境)

目的&#xff1a; 未来在生成日志写入数据库中加一个特殊的字段&#xff0c;官方老版本提供的DBAppender无法实现&#xff0c;并且好巧不巧&#xff0c;在新版本这个实现也被删除了&#xff0c;所以重写一个实现。 1. 安装依赖 安装logback maven依赖 注意&#xff1a; lo…

数据结构——实验01-线性表的链式存储和操作

一、实验内容 二、算法思想与算法实现 1、解题思想 &#xff08;1&#xff09;逆序创建链表La就是使用头插法创建一个链表&#xff0c;所谓头插法就是在创建链表时始终将新元素插入到头结点之后&#xff0c;而正序创建链表Lb就是使用尾插法创建一个链表&#xff0c;所谓尾插法…

[高阶·产品经理]业务建模和需求高阶2月26-3月1日晚8点

等级 高阶 介绍 软件开发中&#xff0c;需求是解决“系统怎样好卖”的问题&#xff0c;设计是解决“降低开发成本”的问题。 本训练聚焦第一个方面&#xff0c;在点上强化业务建模和需求的技能。每期的教材都会根据当期学员所整理的学习《软件方法》的过程中以及工作中碰到的…

SELinux,android自启动自定义程序

rc文件仿照代码&#xff1a; service test_que /vendor/bin/test_que user root group system oneshot seclabel u:r:test_que:s0 on boot start test_que Android.bp文件仿照&#xff1a; init_rc: ["test_que.rc"], product.package.mk文件…

conda虚拟环境基础

【一文搞定最新版Anaconda】Win11 安装 Anaconda&#xff08;2023.9&#xff09;详解&#xff08;不删除旧版情况下下载、安装、注册、登录、设置环境变量、迁移旧环境、配置修改换源等&#xff09;连接Pycharm_win11安装anaconda-CSDN博客 conda命令大全&#xff08;create/in…

产品经理必备知识——API接口(获取电商商品订单数据API)

前言 在古代&#xff0c;我们的传输信息的方式有很多&#xff0c;比如写信、飞鸽传书&#xff0c;以及在战争中使用的烽烟&#xff0c;才有了著名的烽火戏诸侯&#xff0c;但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代&#xff0c;我通过…

网络安全之漏洞扫描

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷&#xff0c;从而可以使攻击者能够在未授权的情况下访问或破坏系统。这些缺陷、错误或不合理之处可能被有意或无意地利用&#xff0c;从而对一个组织的资产或运行造成不利影响&#xff0c;如信息系统被攻击或控制…

github上传代码遇到的问题

今晚跟着这一篇文章在GitHub上测试上传项目。《怎样在GitHub上传自己的项目》 在最后一步 git push -u origin master 遇到了问题 warning: redirecting to https://github. com/xxx/test.git/ error: RPC failed;cur1 28 Recv failure: Connection was reset send-pack: unex…

关于node.js奇数版本不稳定 将11.x.x升级至16.x.x不成功的一系列问题(一)

据说vue2用16稳定一些 vue3用18好一点&#xff08;但之前我vue3用的16.18.1也可以&#xff09; 为维护之前的老项目 先搞定node版本切换 下载nvm node版本管理工具 https://github.com/coreybutler/nvm-windows/releases 用这个nvm-setup.zip安装包 安之前最好先将之前的nod…

算法篇:递归、搜索与回溯算法

一、递归、深搜、穷举vs暴搜vs深搜vs回溯vs剪枝&#xff1a; 01、面试题 08.06. 汉诺塔问题 class Solution { public:void hanota(vector<int>& a, vector<int>& b, vector<int>& c) {dfs(a, b, c, a.size());}void dfs(vector<int>&a…

基于WordPress开发微信小程序2:决定开发一个wordpress主题

上一篇&#xff1a;基于WordPress开发微信小程序1&#xff1a;搭建Wordpress-CSDN博客 很快发现一个问题&#xff0c;如果使用别人的主题模板&#xff0c;多多少少存在麻烦&#xff0c;所以一咬牙&#xff0c;决定自己开发一个主题模板&#xff0c;并且开源在gitee上&#xff…

C++类和对象的属性

C类和对象的属性 千钧一发&#xff0c;让一根头发去承受三万斤的重量&#xff0c;但是它没有断。-----余华 const修饰结构体指针 内部值不能修改&#xff0c;即&#xff1a;只能读&#xff0c;不能写。防止误操作 #include <iostream> using namespace std;struct Po…

计算机网络自顶向下Wireshark labs-HTTP

我直接翻译并在题目下面直接下我的答案了。 1.基本HTTP GET/response交互 我们开始探索HTTP&#xff0c;方法是下载一个非常简单的HTML文件 非常短&#xff0c;并且不包含嵌入的对象。执行以下操作&#xff1a; 启动您的浏览器。启动Wireshark数据包嗅探器&#xff0c;如Wir…

【数据结构】 - 队列 栈

theme: smartblue 一、队列 1、概念 队列&#xff08;Queue&#xff09;是一种常见的数据结构&#xff0c;它按照先进先出&#xff08;First In First Out&#xff0c;FIFO&#xff09;的原则进行元素操作。在队列中&#xff0c;新元素总是被添加到队列的末尾&#xff0c;而…

spring-boot-actuator 服务监控

1 概述 服务启动时&#xff0c;通过spring-boot-actuator 监控es等服务是否连接成功等 2 依赖 <!-- 服务监控 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><…

2024年美国大学生数学建模竞赛(E题)财产保险建模|MCDA/随机森林建模解析,小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮500人完成了建模与思路的构建的处理了&#xff5e; 本文运用利用时间序列和强化学习结合DQN算法&#xff0c;解决保险业可持续性问题&#xff1b;采用MCDA和随机森林&#xff0c;应对地产业保险挑战&…

[Unity Sentis] Unity Sentis 详细步骤工作流程

文章目录 1. 导入模型文件支持的模型创建运行时模型导入错误 2. 为模型创建输入将数组转换为张量创建多个输入进行操作 3. 创建一个引擎来运行模型创建一个Worker后端类型 4. 运行模型5. 获取模型的输出获取张量输出多个输出打印输出 1. 导入模型文件 要导入 ONNX 模型文件&am…

电脑怎么录屏?打造专业级视频内容!

随着科技的进步&#xff0c;电脑已经深入到我们的日常生活和工作中。而在这个数字时代&#xff0c;录制屏幕内容变得日益重要。无论是制作教程、分享游戏技巧&#xff0c;还是记录重要的演示&#xff0c;录屏都是一个不可或缺的功能。可是电脑怎么录屏呢&#xff1f;本文将深入…