MVC背包分析

这一章节我们主要实现格子视图中方法的调用,现在我们再来梳理一下上一篇的东西
BagView中-----接收---->PlayerInfoView / PlayerBagView
PlayerInfoView------接收------>格子视图gridGroupView  /  血量视图hpView
PlayerBagView------接收------>格子视图gridGroupView
HPView---------接收-------->HpText  /  HpValue
GridView------创建了一个接口接收了GridView中的四个方法------>BeginMove   /  Move   /  EndMove  /  ClickTool 
 当我们都创建完MV后本质上是可以通过调用来实现代码间的交互了,这一节的Controller就是起到了一个嫁接的作用,将所有的代码逻辑在C中全部实现,我们需要创建一个空对象来获取MV中的组件和设置的脚本信息
在空对象上创建一个空的脚本获取BagView,通过Start方法来赋值数据并且展示数据,完成这一步我们是可以把边框展示出来的(功能没有实现)   
=========================================================================================================
初始化中赋值数据和展示数据
Start-----调用两个方法----->MakeData() 赋值数据 / ShowData()  展示数据
第一步:赋值数据
 MakeData()前我们需要初始化人物属性和装备属性 然后在MakeData()中初始化这些值最后==>调用在Start里面

第二步:展示数据 
 这个方法被调用后我们的游戏运行的时候是可以显示出框框和已经赋值过得物品的,这个时候我们就要考虑到通过预设体来创建出来这些框框并且完成展示
ShowData()方法中我们要创建的物品栏有两种,一个是背包的一个是装备的这时候我们就要分支考虑
ShowData------里面要生成-------->背包格子creatGrid(背包)    /  装备格子creatGrid(装备)  / 
  显示生命bagView.playerInfoView.hpView.HPValue.text=player.HP.ToString();
creatGrid()方法中参数需要一个ToolModel类型的数组,一个位置,一个string类型的Tag值(用来表明是背包Tag的还是装备的Tag)
creatGrid()----中的步骤------>1.生成格子2.给obj的格子赋上Tag标签3.记录格子位置4.代理gv.moveHandle5.一个判断当栏子上有图片时候激活图片然后添加上图片6.将预设体添加到父物体
 Start中初始化结束后视图是可以显示了,且在格子中的图片也是可以显示的了,现在我们要做的是另一个功能(将格子中的数据实现拖拽功能)
=========================================================================================================
拖拽和点击功能的实现
/*
移动的四种情况
1.背包--->背包
2.背包--->装备
3.装备--->背包
4.装备--->装备
在移动的时候还要考虑
5.目标格子是空还是有物品
5.当前格子是空还是有物品
6.点击丹药获得属性
*/
这些情况是通过接口中的方法来实现的IMoveHandle接口来实现的所以要调用接口的四种方法
1.public void BeginMove(GridView grid,PointerEventData pointData)()中
1.判断在创建的视图中图片是否为空
2.把预设体的位置赋值给目标位置
3.让目标物体脱离父物体
targetTransform=grid.contentImage.transform;
targetTransform.SetParent(targetTransform.root);

2.public void Move(GridView grid,PointerEventData pointData)()中
1.判断目标位置是否为空 
2.让物品随着鼠标位置移动

3.public void EndMove(GridView grid,PointerEventData pointData)()
 判断目标位置是否为空
一(背包到背包)
判断是开始的物体在背包和目的物体在背包
1.获取目的物体
判断目的格子在数组中是否是空,是就调用ChangeUINullGrid()方法
否则调用ChangeUIFullGrid()方法
2.交换数组数据

二(背包到装备)
判断目标物体在装备和类型是ATK
1.获取目标物体
判断目标物体在数组中是否是空,是就调用ChangeUINullGrid()方法
否则调用ChangeUIFullGrid()方法
2.交换数组数据

三(装备到装备)
判断开始的物体在装备中和目的物体在装备中
1.获取目标物体
判断目的格子在的数组中是否为空,是就调用ChangeUINullGrid()方法
否则调用ChangeUIFullGrid()方法
2.交换数组数据

四(装备到背包)
判断目的物体在背包中
1.获取目的物体
判断是否交换 isChange=true;
判断目的格子在的数组中是否为空,是就调用ChangeUINullGrid()方法
否的话就再判断是ATK类型就调用ChangeUIFullGrid()方法
还不是就不交换isChange=false;
2.如果交换(isChage)就在if中交换数据
最后
 //返回原来的格子
targetTransform.SetParent(grid.transform);
//在父物体的位置localPosition归0
targetTransform.localPosition=Vector3.zero;
//清0
targetTransform=null;
4.public void ClickTool(GridView grid,PointerEventData pointData)
判断背包数组是不为空和类型是HP类型
1.数据更新(把HP类型的值赋给HP并且清空数组中的属性)
2.UI更新
2.1把值赋值给HP下的值文件中(强制转换)
2.2清空图片
2.3取消原格子的图片激活

在第三个方法中调用两个的改变UI的方法
ChangeUINullGrid()
1.目标格子图片的激活
2.将原格子的图片赋值给目的格子
3.将原格子图片清空
4.将原格子图片取消激活
ChangeUIFullGrid()
1.改变图片位置
====================================================================================== 
posted @ 2018-06-01 21:51  方是源  阅读(379)  评论(0编辑  收藏  举报
回顶部