unity3d-学习笔记18-卡牌游戏制作
优化功能-卡牌被拖出的时候层级要作为最高
使用思路
最简单粗暴的方式就是在cardController类里添加当点击到这张卡的时候把他的父级修改为canvas(在我这里是最高级),然后就能变成层级第一的物体,不被其他物体挡住
当拖动结束后,把他的父级再修改回桌面类这个物体即可
待优化的地方
拖动结束后物体会自动变手牌的最后一个,由于时间关系,今天就先完成这么多,后面再优化吧
2021.2.26更新:优化的思路是:在桌面类创建一个方法,每当调用发牌方法的时候就给桌面上现有的卡进行遍历并根据索引赋值排序的操作
给cardController类的enddrag方法添加这个方法,前提是满足不在指定条件的范围下。这样就可以实现卡牌记录的效果了
2021.2.27更新:之前的方法不行,因为卡类这个预制体里的组件和子级很多,如果要使用遍历的方法堆内存的占用就会变得很大。所以在尝试过后我换了另一种思路
只需在cardController类里克隆一个当前对象,将原对象进行影藏,然后将这个克隆的对象的父级设置为canvas,然后在ondrag的方法里移动的是这个克隆的对象,在enddrag方法里判定如果不是指定的区域的话,就把这个父级删掉,然后恢复原对象即可实现这个功能
但是还有待优化的地方:就是感觉不好,因为移动的时候,其他卡没有自动对齐,会不太好看,只能看后面有没有其他解决的思路了
创建克隆的新对象,在begindrag里实例化
隐藏掉原对象,然后让鼠标移动的坐标值赋值到克隆的对象上
在enddrag方法里调用这个销毁克隆对象,恢复原对象的方法即可