使用mvc思想,将背包道具数据(道具名、道具ui的图片)信息存放在继承了Scriptable类的实例化对象中,然后用InventoryManager去管理和控制每个道具对象上的Item,Item设置相关的道具信息可以让InventoryManager知道是哪一个Item(道具)。

什么是MVC
M即Model(模型)
V即View(视图)
C即Control(控制)
而使用MVC的目的就是将M和V进行代码分离,便于逻辑区分

将所有的道具的名字存放在枚举类中Enums.cs,暂写一个Key


/// <summary>
/// 每个道具的名字
/// </summary>
public enum ItemName
{None,Key,// .....
}

InventoryManager.cs负责将点击的道具名字存储进来

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class InventoryManager : Singleton<InventoryManager>
{// [SerializeField]使私有化的字段可以在inspector面板中被看见[SerializeField] private List<ItemName> itemNames;private void Start(){itemNames = new List<ItemName>();}public void AddItem(ItemName itemName){// 如果背包中不存在此物体则添加进去if (!itemNames.Contains(itemName)){itemNames.Add(itemName);// 根据当前的item显示对应的ui图标}}
}

场景中的道具添加对应的碰撞体并勾选IsTrigger,添加脚本Item.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Item : MonoBehaviour
{public ItemName itemName;// 根据item的名字添加背包的数据public void AddItem(){// 使用单例来添加该item的数据到总体的数据中InventoryManager.Instance.AddItem(this.itemName);// 设置为不可见this.gameObject.SetActive(false);}
}

存储每个道具信息ItemDataList_SO.cs,继承ScriptableObject,

using System.Collections;
using System.Collections.Generic;
using UnityEngine;// 使project面板右键增加scriptbale文件
[CreateAssetMenu(fileName = "ItemDataList_SO", menuName = "Inventory/ItemDataList_So")]
public class ItemDataList_SO : ScriptableObject
{// public List<ItemDetails> itemDetailsList;// 获取对应的item的信息public ItemDetails GetItemDetails(ItemName itemName){return itemDetailsList.Find(i => i.itemName == itemName);}
}/// <summary>
/// 存储每个item对应的详细信息, 使之可见在inspector面板上
/// </summary>
[System.Serializable]
public class ItemDetails
{public ItemName itemName;public Sprite itemSprite;
}

最后在之前的CursorManager.cs中修改函数ClickAction(GameObject clickObject),添加对Tag为Item的道具的操作

public void ClickAction(GameObject clickObject){switch (coll.gameObject.tag){case "Teleport":// 获取对象上的Teleport组件,执行场景切换方法Teleport t = clickObject.GetComponent<Teleport>();t?.TransitionScene();break;case "Item":Item item = clickObject.GetComponent<Item>();item?.AddItem();break;default:break;}}

《迷失岛2》游戏开发框架开发日记:背包基本逻辑相关推荐

  1. 《迷失岛2》游戏开发框架开发日记:场景切换和淡入淡出效果

    M_Studio的教程:[<迷失岛2>游戏框架开发01:实现场景转换|Unity教程] 搭建场景 使用下载好的素材搭建场景H1-H4和H2A.永久的场景Persistent,将场景都拖拽到 ...

  2. 【迷失岛游戏框架开发个人每集总结(第三期)】

    目录 系列文章目录 前言 1代码 1.1 1.2 1.3 1.4 2 总结 系列文章目录 迷失岛游戏框架开发个人每集总结(第一期) 迷失岛游戏框架开发个人每集总结(第二期) 前言 在上一期中,我们实现 ...

  3. 【迷失岛游戏框架开发个人每集总结(第四期)】

    目录 系列文章目录 前言 1 1.1 1.2 1.3 2 总结 系列文章目录 迷失岛游戏框架开发个人每集总结(第一期) 迷失岛游戏框架开发个人每集总结(第二期) 迷失岛游戏框架开发个人每集总结(第三期 ...

  4. libGDX跨平台游戏开发框架入门:开发一个小游戏之加载资源

    目录 前言 加载资源 libGDX资源目录说明 配置各个平台启动器 desktop模块启动器设置 Android模块启动器设置 加速度计和指南针 html模块启动器设置 编写加载资产代码 1. 加载图 ...

  5. 迷失岛3计算机密码,迷失岛3在计算机内输入隐藏字母怎么完成_迷失岛3计算机天才成就攻略_玩游戏网...

    <迷失岛3>一周目第三关攻略 迷失岛3宇宙的尘埃一周目第三关怎么过?迷失岛系列第三部终于上线了,小编这里带来了迷失岛3一周目第三关攻略,想要参考的玩家们就一起来看看吧!>>&g ...

  6. SDL2 游戏开发日记(九) 单机麻将

    SDL2 游戏开发日记(九) 单机麻将 单机麻将的基本功能其实年前已经完成了,只是写文档麻烦,再加上懒癌和重度拖延症,就一直拖着没更新.今天周末一个人没什么事干,抽空把它更新了. 麻将的表示 用数组表 ...

  7. libgdx游戏引擎开发笔记(一)引擎介绍和Helloworld

       做Android快一年了,项目也做了四五个,感觉没什么动力向前,思绪整理了一段时间,决定转入Android游戏开发,同时发现了一款强大的游戏引擎libgdx,在此边学边整理,好记性不如烂笔头嘛! ...

  8. 跨平台2D/3D游戏开发框架libGDX发布1.2.0更新

    摘要:基于OpenGL (ES)的跨平台2D/3D游戏开发框架libGDX不仅开源免费,而且具有极为强大的兼容性和高效性,近日,libGDX发布全新1.2.0版本,除修复Bug之外,还新增了OpenG ...

  9. Java(Android)游戏开发框架LGame-0.2.7发布

    Java(Android)游戏开发框架LGame-0.2.7发布 2010-08-19更新内容: 1.针对Android版增加了多点触摸支持. 2.增加了一组模拟按钮,以Screen实现Emulato ...

最新文章

  1. 互联网跨界营销掘金“大数据”
  2. Android开发之程序员必须要懂得Android的重要设计理念
  3. 学习笔记--Spark
  4. python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载
  5. 一个略显复杂的transformation算子_distinct
  6. 在Ubuntu 16.04 安装python3.6 环境并设置为默认
  7. .xyz文件_Orca.xyz:除了银行系统瑞士还有同样安全的数字保险箱
  8. iOS微信运动 刷分
  9. 矩阵范数的等价性(原创)
  10. STM8L101和STM8S103差异对比
  11. nginx配置CSP策略和Nonce随机数方案
  12. foxmail收取服务器邮件次数,Foxmail:如何设置收取历史邮件?
  13. html5开发app的视频教程及相关资料
  14. 工厂模式与抽象工厂模式
  15. MacOSx打包dmg文件(带背景图片)
  16. USACO Palindromic Squares 回文平方数
  17. ❤️小白到精英必备的100多个Python函数汇总❤️写代码都流畅多了
  18. mysql数字型检索比字符型检索快_mysql温故知新
  19. Windows程序员初学Linux内核(附Linux内核各版本历史纪年表)
  20. [NE-A] 动作电位 Action Potential

热门文章

  1. CIO时代APP上线了!每天微讲座等让IT学习“兴趣随身”
  2. oracle锁表原因,解决方法
  3. linux网络配置(超简单,一看就会)
  4. 【BAPI】- [ BAPI_ACC_DOCUMENT_POST ]资产类科目过账
  5. PR最常见的技巧是什么?
  6. 运维面试基础试题(四)
  7. centerOS各种问题(Xshell链接不上虚拟机)
  8. 简单的登录验证程序代码
  9. 什么牌子蓝牙耳机佩戴舒适?佩戴舒适度最好的蓝牙耳机推荐
  10. 不要停止预训练实战(二)-一日看尽MLM