Unity(2048)05-數(shù)字移動和合并

//使用 GetComponent<Number>() 方法獲取到 gameObj 對象上的 Number 組件,并將其存儲在 Number 類型的變量中。然后,調(diào)用 Init() 方法對數(shù)字對象進行初始化,傳入的參數(shù)是當前數(shù)字對象所在的格子對象
? 添加鼠標監(jiān)聽











實現(xiàn)MoveNumber()方法




isHaveNumber()判斷上方格子是否有數(shù)字和是否可以合并
實現(xiàn)Number腳本的MoveGrid方法

該方法首先使用 SetParent()
方法將當前游戲物體設(shè)置為目標網(wǎng)格的子對象,以便它隨著目標網(wǎng)格的移動和旋轉(zhuǎn)而跟隨移動。接著,使用 transform.localPosition
將當前游戲物體的局部坐標設(shè)置為 (0, 0, 0)
,從而將它放置在目標網(wǎng)格的中心位置。
然后,該方法將當前游戲物體所在的網(wǎng)格中的數(shù)字設(shè)置為 null
,表示該網(wǎng)格不再包含任何數(shù)字。接著,將目標網(wǎng)格的數(shù)字設(shè)置為當前游戲物體所在網(wǎng)格的數(shù)字,以更新游戲狀態(tài)。最后,該方法使用 SetGrid()
方法將當前游戲物體的網(wǎng)格位置更新為目標網(wǎng)格,完成移動操作。




遍歷當前數(shù)字方塊的上方格子,查找是否存在數(shù)字方塊。
如果存在數(shù)字方塊,判斷當前數(shù)字方塊的數(shù)字是否與上方數(shù)字方塊的數(shù)字相等,如果相等則合并。使用
GetNumber()
方法獲取上方數(shù)字方塊的數(shù)字,并將其與當前數(shù)字方塊的數(shù)字進行比較。如果兩個數(shù)字相等,則使用Merge()
方法將它們合并,并將當前數(shù)字方塊銷毀。如果兩個數(shù)字不相等,則直接跳出循環(huán),結(jié)束操作。如果上方格子中沒有數(shù)字方塊,則將當前數(shù)字方塊移動到上方格子中。使用
MoveToGrid()
方法將當前數(shù)字方塊移動到上方格子中,從而實現(xiàn)數(shù)字方塊的移動操作。
grids[m][j].GetNumber()
返回的是 Number
類的一個對象,而不是該對象的數(shù)字屬性。然后再調(diào)用其 GetNumber()
方法獲取其數(shù)字屬性




如果
grids[m][j]
格子中有數(shù)字對象,則將其賦值給targetNumber
。調(diào)用
HandleNumber()
方法來處理number
和targetNumber
之間的交互,合并如果
targetNumber
不為空,說明已經(jīng)找到了一個目標格子,可以跳出循環(huán)了。





完成數(shù)字合并