零碎想法记录,等做完了再整理。。。。。。。。
思考物品的保存:
从excel读入——>得到一堆字符串
对于每一关,每一个地图,剧情的每一阶段,都有对应的物品,对当前阶段,将对应字符串加载成游戏资源,对上一个阶段,释放不必要的游戏资源。
对于这些字符串,考虑加载成游戏资源,存放在Item及其派生类(此处可以考虑scriptableobject)里,通过ItemManager里用list管理,此处通过id查找对应的类实例。
在每一个阶段加载的物品,它可能在玩家,商人背包里,也有可能在野外掉落,也有可能在仓库里。我们把全游戏的物品用字符串方式存储;当前阶段的物品以游戏资源方式存储在ItemManager里,而玩家,商人背包,仓库,野外分别持有物品id。在背包里,需要物品的sprite,name,information,number,属性,特性。(由于对于id,sprite,number需求频繁,所以我想构建一个类专门存放背包中的物品,待定)
在玩家,商人背包,仓库,野外中可能需要的操作有:加入;删除;交换,减少,增加,升级;
完成后进行保存,保存每一个物品的字符串,和在玩家,商人背包,仓库,野外中的物品id。
假设玩家,仓库只有一个,但商人可以有很多个,每一个人都要分别记录他们的物品id。这里创建一个类挂在每一个owner实体上,每个owner都有一个标识码,都向itemManager注册,方便管理;(想法一:这个标识码通过字符串得到。这个标识码和owner阶段+位置+名字一一对应,这个标识码由excel读入,)(想法二:把所有owner做成prefab)(想法三:这个标识码放在scriptableobject)(想法四:直接inspecter面板赋值)
item游戏资源和item字符串只有sprite,prefab的区别,所以我考虑spritepath和sprite放在一起。
游戏全局物品放在txt里不读,只读当前阶段物品。
image+num(Item)——>slot——>inventory——>owner——>ItemManager
由下向上传递:item的id在每一个slot里面,向上传到inventory里面,向上传到owner里面,向上传到itemManager里面,由多到少,而id回来的时候,能够从itemManager回到owner再回到inventory,再回到slot。
不如构建一个类专门用来进行这种数据传递。
做背包有两层:UI层,数据层。要做的事情:1.UI操作;2.数据操作;3.UI和数据的交互;
UI操作
1.点击按钮;
2.打开,关闭页面;
3.拖动物体
数据操作:
1.存数据
2.读数据
3.字符串转游戏资源;游戏资源转字符串
4.删数据
UI交互数据:
1.点击触发点击事件;
2.拖动触发拖动事件
具体来讲:
1.启动游戏:字符串加载到内存,存放
2.部分字符串转游戏资源
3.打开背包的消耗品界面,看见每一个槽位有图片和数量
4.点击物品,出现信息介绍,出现“使用”,“丢弃”选项,点击使用,会有效果,点击丢弃,图标,数量消失,释放对应游戏资源,删除此位置的数据记录;点击空白处或点击关闭,信息介绍和选项消失;
5.拖动物品,可以和其他物品交换位置
6.点击关闭按钮,面板隐藏
7.获得一件物品,打开背包查看:此位置记录对应数据,加载对应游戏资源,看见该物品图标,数量;点击该图标,进行4步骤。观看结束,进行步骤6。
8.快捷使用药品,药品数据中数量减少,此时如果进行步骤3,则药品数量减少。如果药品用完,则删除此位置数据记录,释放对应游戏资源,此时如果进行步骤3,则清除图片,清除数量。
9.点击存档,则背包里的物品记录其id和路径(字符串),转成文本文件;
10.退出游戏,结束。