asset文件夹路径 unity_Unity还原星露谷物语2:种地篇数据读写+TileMap

本文介绍了在Unity中实现星露谷物语种地系统的步骤,包括使用TileMap创建瓦片地图,通过EPPlus读取静态数据,利用LitJson处理动态数据。文章详细讲解了如何处理土地状态、物品生成以及图块操作,同时也提到了时间管理和动画制作。此外,还分享了相关资源和开发经验。
摘要由CSDN通过智能技术生成

大家好,我是想对 使用炎拳的炎拳,上一篇星露谷中我完成了人物的移动并搭建了一个简单的界面,这篇就来瞅瞅星露谷的地是怎么种的。

首先看看游戏中的种地的过程:

c8f6fd3bd2fed6a2972c0ddb3a55c28b.png

大致上完成一次耕种,需要这几个步骤:选中锄头—开垦一块地—选择种子种下—浇水;同时种子会随时间的流逝成长,长到有叶片后人物走过,会触发一个庄稼动一下的动画~

所以这里我要做的功能就清晰了,先整个庄稼的预制体,其中包含所需的图片文字素材,然后点击一下土地就在那位置生成一个,大功告成啦!

才怪~

1e6e85d39a696ac1604ac5e7362edab9.png

考虑到星露谷的物品繁多,如果用预制体来制作每个单独的物品,就太笨拙了;同时每个物品有自己的描述和各种属性,对应的Sprites也可以通过其地址实时读取,所以我希望能通过表格来填写这些物品的固有属性,这些数据属于静态数据。

同时种子,鱼,这些物品使用时会有数量的增减,而斧头,锄头这些道具则可以进行升级,数量,等级这些数据属于动态数据,经常改变,游戏结束也需要保存下来。

所以最后我的方案是:物品的名字,描述,Sprites地址等静态数据通过表格获得,表格的读取使用EPPlus插件实现;物品的数量,等级等动态数据,以json文件的方式保存,这里我使用了LitJson来实现。

首先写个物品的基础类,再在表格中填上对应的静态数据:

public class ItemInfo{    //动态数据,从json中获取    public int Id;    public int amount;    public ItemQuality itemQuality;    public bool isSelected;    //静态数据    public string name;    public string description;    public string []icons;//表格中图片名字的集合    public ItemType itemType;    public Tool tool;    public int growTime;    /// 构造函数仅构造静态数据,通过表格id获取    public ItemInfo(int BaseDataid )    {        this.name = GetBaseData.instance.baseInfo[BaseDataid].name ;        this.description = GetBaseData.instance.baseInfo[BaseDataid].description;        this.icons = GetBaseData.instance.baseInfo[BaseDataid].icons;        this.itemType = GetBaseData.instance.baseInfo[BaseDataid].itemType;        this.tool = GetBaseData.instance.baseInfo[BaseDataid].tool;        this.growTime = GetBaseData.instance.baseInfo[BaseDataid].growTime ;    }}
ea868edb137c2b87d14697d99fcd93ba.png

表格的读取我使用EPPlus插件,使用方法很简单,网上找到对应dll文件到工程,调用这两个指令集:

using OfficeOpenXml;using System.IO;

静态数据读取:

    public void GetExcelData()    {        string FilePath = Application.dataPath + "/Resources/ItemData/BaseData.xlsx";        Debug.Log("路径" + FilePath);        FileInfo fileInfo = new FileInfo(FilePath);        if (fileInfo.Length == 0)        {            Debug.Log("Excel文件不存在");            return;        }        using (ExcelPackage excel = new ExcelPackage(fileInfo))        {            ExcelWorksheet worksheet = excel.Workbook.Worksheets[1];            int maxRow_Data = worksheet.Dimension.End.Row; //行            int maxColumn_Data = worksheet.Dimension.End.Column; //列            int Id = 0;            //从第二行开始读取数据            for 
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值