Unity(2048)05-数字移动和合并

//使用 GetComponent<Number>() 方法获取到 gameObj 对象上的 Number 组件,并将其存储在 Number 类型的变量中。然后,调用 Init() 方法对数字对象进行初始化,传入的参数是当前数字对象所在的格子对象
添加鼠标监听











实现MoveNumber()方法




isHaveNumber()判断上方格子是否有数字和是否可以合并
实现Number脚本的MoveGrid方法

该方法首先使用 SetParent()
方法将当前游戏物体设置为目标网格的子对象,以便它随着目标网格的移动和旋转而跟随移动。接着,使用 transform.localPosition
将当前游戏物体的局部坐标设置为 (0, 0, 0)
,从而将它放置在目标网格的中心位置。
然后,该方法将当前游戏物体所在的网格中的数字设置为 null
,表示该网格不再包含任何数字。接着,将目标网格的数字设置为当前游戏物体所在网格的数字,以更新游戏状态。最后,该方法使用 SetGrid()
方法将当前游戏物体的网格位置更新为目标网格,完成移动操作。




遍历当前数字方块的上方格子,查找是否存在数字方块。
如果存在数字方块,判断当前数字方块的数字是否与上方数字方块的数字相等,如果相等则合并。使用
GetNumber()
方法获取上方数字方块的数字,并将其与当前数字方块的数字进行比较。如果两个数字相等,则使用Merge()
方法将它们合并,并将当前数字方块销毁。如果两个数字不相等,则直接跳出循环,结束操作。如果上方格子中没有数字方块,则将当前数字方块移动到上方格子中。使用
MoveToGrid()
方法将当前数字方块移动到上方格子中,从而实现数字方块的移动操作。
grids[m][j].GetNumber()
返回的是 Number
类的一个对象,而不是该对象的数字属性。然后再调用其 GetNumber()
方法获取其数字属性




如果
grids[m][j]
格子中有数字对象,则将其赋值给targetNumber
。调用
HandleNumber()
方法来处理number
和targetNumber
之间的交互,合并如果
targetNumber
不为空,说明已经找到了一个目标格子,可以跳出循环了。





完成数字合并