Unity背包系统与存档(附下载链接)

下载地址:

https://download.youkuaiyun.com/download/qq_58804985/88184776

视频演示:

功能:

拖动物品在背包中自由移动,当物品拖动到其他物品上时,和其交换位置.基于EPPlus的背包数据与位置保存

原理:

给定一个道具池表格与一个背包表格

道具池表格负责存储所有道具的信息

背包表格负责存储将玩家背包的档案储存

当增删道具时,从道具池表格中检索对应的道具写入背包表格

优化方案拓展:当道具数量众多时,在增删物品时可以将物品分类存储到不同的道具池表格,根据Type检索对应表格的数据

效果:

 

 

 代码:

背包系统核心

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OfficeOpenXml;
using System.IO;
using UnityEngine.Networking;
using UnityEngine.UI;
using Random = UnityEngine.Random;
 

public class BagSystem : MonoBehaviour
{
    public static string ReadingExcel;//正在读取的表格
    [Header("表格文件夹")]
    public string URL = Application.streamingAssetsPath + $"\\Bag";
    [Header("存放背包EXCEL的表格名称")]
    public string BagExcelURL="Bag";
    [Header("存放道具EXCEL的表格名称")]
    public string ItemExcelURL="Item";

    /// <summary>
    /// 背包是否处于打开状态
    /// </summary>
    public static bool IsOpening;

    [Header("存放Sprite的文件夹(依赖resource)")] public string SpriteURL ="Bag";
    public static List<BagItem> MyBag= new List<BagItem>();//当前背包
    public static List<BagItem> ItemPool= new List<BagItem>();//道具池
    private static bool m_loaded;
    
    public virtual void OnEnable()
    {
        initialization();
        IsOpening = true;
    }

    //初始化
    public void initialization()
    {
        if (!m_loaded)
        {
            LoadExcel();
            m_loaded = true;

        } 

    }
    
    public class BagItem
    {
        public string Name;//物品名称
        public string Num;//物品数量
        public string Image;//图片地址
        public string x;//位置X
        public string y;//位置Y
    }

    //获取当前背包内的所有物品
    public static List<BagItem> GetItemList()
    {
        return MyBag;
    }
/// <summary>
/// 从玩家背包获取指定物品数量
/// </summary>
/// <param name="name">物品名称</param>
/// <returns></returns>
    public static int GetItem(string name)
    {
        foreach (var VARIABLE in MyBag)
        {
            if (VARIABLE.Name==name)
            {
                return Convert.ToInt32(VARIABLE.Num);
            }
        }

        Debug.LogWarning($"你试图找{name},但是没有找到");
        return 0;
    }

/// <summary>
/// 向背包添加指定物体
/// </summary>
/// <param name="name">物体名称</param>
/// <param name="num">物体数量</param>
/// <pa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值