《迷失岛2》游戏开发框架开发日记:背包基本逻辑
Posted 阿宝逃离地球
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《迷失岛2》游戏开发框架开发日记:背包基本逻辑相关的知识,希望对你有一定的参考价值。
使用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》游戏开发框架开发日记:背包基本逻辑的主要内容,如果未能解决你的问题,请参考以下文章