大致流程:
1.设置gui界面
2.将拾取到的物体存储(scriptableObject)
3.gui显示拥有的物品的信息(图片,数量。描述)
4.实现可以拖曳物品的效果
涉及知识点
1每一个在世界中的可拾取物品都挂载itemOnworld脚本
拾取物品函数 在itemOnworld脚本中
拾取逻辑如下:
遍历inventory list,
背包中没有过,添加一个新item的到inventory list中,设置held为1
背包中已有,将item.held+1
2使用单例控制组件显示层的逻辑,方便下数据层和数据存储层数据调用。
3instantitate 用prefabs生成实体
4每一个item都要挂载itemOndrag
itemOndrag实现拖曳接口(IbeginDragHandler,IdragingHandler,Ienddraghandler)
通过transform.position改变改变item的位置实现交换,放置
5.为防止渲染过程中item中的itemImage被slot(父对象)的贴图挡住,需要暂时解除父级关系transform.setParent
6.PointEventData evendata.pointerCurrentRaycast.gameobject 射线检测ui元素,为item添加Canvas group组件,拖曳过程中需要将blockRayCast 置否,否则将会一直检测到item,无法检测到后面的。
7.解决拖曳开始时一瞬间物体飘移到左下角的情况,为item添加LayOut Element 选中Ignore layout