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

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

前言

欢迎来到【制作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;//重新定位选中框图位置

   //。。。
}

配置参数

效果

源码

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

目录
相关文章
|
4月前
|
编译器 vr&ar 图形学
从零开始的unity3d入门教程(五)---- 基于Vuforia的AR项目
这是一篇Unity3D结合Vuforia实现增强现实(AR)项目的入门教程,涵盖了环境配置、Vuforia账户注册、Target数据集创建、Unity项目设置、AR程序配置、Android环境配置以及最终在手机上测试运行的全过程。
从零开始的unity3d入门教程(五)---- 基于Vuforia的AR项目
|
4月前
|
API 开发工具 vr&ar
PicoVR Unity SDK⭐️一、SDK下载、项目设置与程序初始配置
PicoVR Unity SDK⭐️一、SDK下载、项目设置与程序初始配置
|
3月前
|
图形学 开发者 UED
Unity游戏开发必备技巧:深度解析事件系统运用之道,从生命周期回调到自定义事件,打造高效逻辑与流畅交互的全方位指南
【8月更文挑战第31天】在游戏开发中,事件系统是连接游戏逻辑与用户交互的关键。Unity提供了多种机制处理事件,如MonoBehaviour生命周期回调、事件系统组件及自定义事件。本文介绍如何有效利用这些机制,包括创建自定义事件和使用Unity内置事件系统提升游戏体验。通过合理安排代码执行时机,如在Awake、Start等方法中初始化组件,以及使用委托和事件处理复杂逻辑,可以使游戏更加高效且逻辑清晰。掌握这些技巧有助于开发者更好地应对游戏开发挑战。
160 0
|
4月前
|
图形学 C# 开发者
Unity粒子系统全解析:从基础设置到高级编程技巧,教你轻松玩转绚丽多彩的视觉特效,打造震撼游戏画面的终极指南
【8月更文挑战第31天】粒子系统是Unity引擎的强大功能,可创建动态视觉效果,如火焰、爆炸等。本文介绍如何在Unity中使用粒子系统,并提供示例代码。首先创建粒子系统,然后调整Emission、Shape、Color over Lifetime等模块参数,实现所需效果。此外,还可通过C#脚本实现更复杂的粒子效果,增强游戏视觉冲击力和沉浸感。
270 0
|
4月前
|
开发者 图形学 前端开发
绝招放送:彻底解锁Unity UI系统奥秘,五大步骤教你如何缔造令人惊叹的沉浸式游戏体验,从Canvas到动画,一步一个脚印走向大师级UI设计
【8月更文挑战第31天】随着游戏开发技术的进步,UI成为提升游戏体验的关键。本文探讨如何利用Unity的UI系统创建美观且功能丰富的界面,包括Canvas、UI元素及Event System的使用,并通过具体示例代码展示按钮点击事件及淡入淡出动画的实现过程,助力开发者打造沉浸式的游戏体验。
116 0
|
4月前
|
图形学
Unity动画☀️Unity动画系统Bug集合
Unity动画☀️Unity动画系统Bug集合
|
6月前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
186 2
|
6月前
|
图形学
【unity实战】Unity中基于瓦片的网格库存系统——类似《逃离塔科夫》的库存系统(下)
【unity实战】Unity中基于瓦片的网格库存系统——类似《逃离塔科夫》的库存系统
93 0
|
4月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
220 6
|
3月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
158 4