为了实现拖拽功能我们要对代码进行升级,为了简洁明了我写在这篇文章里
先粘更新后的脚本,更新后的脚本可以实现
物品的存放,
数据的存储(使用scriptable和链表),
目录
item脚本
[CreateAssetMenu(fileName ="New Item",menuName ="Inventory/New Item")]//默认名字,右键菜单叫什么名字/
/// <summary>
/// 属性
/// </summary>
public class Items : ScriptableObject
{/// <summary>
/// 物品的名字
/// </summary>
public string itemName;
/// <summary>
/// 物品的图片
/// </summary>
public Sprite itemImage;
public int ItemHeld;///数量
[TextArea]
/// <summary>
/// 介绍
/// </summary>
public string ItemInfo;
/// <summary>
/// 是否可以装备上
/// </summary>
public bool equip;
}
inventory脚本
[CreateAssetMenu(fileName = "New Inventory", menuName = "Inventory/New Inventory")]
public class Inventory : ScriptableObject
{
public List<Items> itemList = new List<Items> ();
// public Items[] itemlist;
}
上面两个一个是物品的属性,一个是背包的属性
InventoryOnworld脚本
/// <summary>
/// logic:挂在在脚本上我要知道这是属于哪一个我们创建好的物品的数据,
/// 生成变量告诉UNity这是一个宝剑还是一个鞋
/// </summary>
public class ItemOnWorld : MonoBehaviour
{[Tooltip("Items->物品是哪一个数据库")]
public Items thisItem;
[Tooltip("属于哪一个背包")]
public Inventory PlayerInventory;
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.CompareTag("Player"))
{
AddNewItem();//添加物品
Destroy(gameObject);
}
}
public void AddNewItem()
{
if(!PlayerInventory.itemList.Contains(thisItem))

本文介绍如何在Unity中实现一个简单的背包系统,包括物品的存放、数据存储(使用Scriptable对象和链表),以及拖拽功能的实现。通过更新后的脚本,详细解释了item、inventory、InventoryOnworld、inventorymanager和slot脚本的作用和逻辑,特别是InventoryOnworld脚本中的触发检测逻辑和slot脚本中的赋值操作。文章还提及了将createnewitem方法拆分以适应拖动效果的改进。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



