【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)

本文主要是介绍【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果演示

在这里插入图片描述

文章目录

  • 效果演示
  • 系列目录
  • 前言
  • 快捷栏操作,并可切换手臂
    • 绘制快捷栏UI
    • 代码控制快捷栏切换
  • 快捷栏显示选中效果
    • 绘制选中效果UI图
    • 代码重新定位选中效果图
  • 源码
  • 完结

系列目录

前言

欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱等功能,我会附带项目源码,以便你更好理解它。

快捷栏操作,并可切换手臂

绘制快捷栏UI

复制前面背包UI进行修改即可
在这里插入图片描述

代码控制快捷栏切换

修改Item

public class Item : MonoBehaviour
{//。。。public int equippableItemIndex = -1;//装备对应手臂的索引,-1表示该物品不可装备
}

修改Inventory

[Header("UI")]
public List<Slot> hotbarSlots = new List<Slot>();//快捷栏的槽位列表[Header("可装备的物品")]
public List<GameObject> equippableItems = new List<GameObject>(); // 通常是人物手臂列表
private int curHotbarIndex = -1; // 当前选择的快捷栏索引public void Start()
{toggleInventory(false); // 初始时关闭背包界面//合并槽位allInventorySlots.AddRange(hotbarSlots);allInventorySlots.AddRange(inventorySloats);foreach (Slot uiSlot in allInventorySlots) // 初始化所有槽位{uiSlot.initialiseSlot();}
}public void Update()
{//。。。for (int i = 1; i < hotbarSlots.Count + 1; i++){if (Input.GetKeyDown(i.ToString())){curHotbarIndex = i - 1;//设置当前选中的快捷栏索引enableHotbarItem(curHotbarIndex);//激活快捷栏中指定索引的装备物品}}
}// 激活快捷栏中指定索引的装备物品
private void enableHotbarItem(int hotbarIndex)
{// 将每个物品设为不激活状态foreach (GameObject item in equippableItems){item.SetActive(false);}// 根据提供的索引,从快捷栏数组中获取对应的槽位Slot hotbarSlot = hotbarSlots[hotbarIndex];// 检查该槽位是否含有物品if (hotbarSlot.hasItem()){if (hotbarSlot.getItem().equippableItemIndex != -1){// 如果物品可装备,根据其装备索引找到对应的手臂对象,并将其设为激活状态equippableItems[hotbarSlot.getItem().equippableItemIndex].SetActive(true);}}
}

为了方便这里就不添加手臂了,直接把物体放在人物前面,实现类似抓住物品的效果
在这里插入图片描述

配置所有手臂参数
在这里插入图片描述

配置装备物品对应手臂的索引,索引要和手臂的位置对应
在这里插入图片描述
配置好快捷栏插槽数据
在这里插入图片描述
效果
在这里插入图片描述

快捷栏显示选中效果

绘制选中效果UI图

添加一个图片,并把透明度调高,然后把选中效果图x轴默认调很大,这样我们默认就看不到选中效果了,后面再用代码重新定位选中效果图即可
在这里插入图片描述

代码重新定位选中效果图

修改Inventory

public Transform selectedItemImage; // 选中框图// 激活快捷栏中指定索引的装备物品
private void enableHotbarItem(int hotbarIndex)
{// 将每个物品设为不激活状态foreach (GameObject item in equippableItems){item.SetActive(false);}// 根据提供的索引,从快捷栏数组中获取对应的槽位Slot hotbarSlot = hotbarSlots[hotbarIndex];selectedItemImage.transform.position = hotbarSlots[hotbarIndex].transform.position;//重新定位选中框图位置//。。。
}

配置参数
在这里插入图片描述

效果
在这里插入图片描述

源码

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

完结

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

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

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

在这里插入图片描述

这篇关于【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱4(附带项目源码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/706462

相关文章

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my