本節(jié),我們先實(shí)現(xiàn)暫停功能,再制作場(chǎng)景中的暫停對(duì)象。
功能非常簡(jiǎn)單,添加一個(gè)暫停標(biāo)記,然后在鍵盤(pán)事件、核心邏輯、消除方塊中添加一個(gè)判斷即可。
01.暫停標(biāo)記
bool _paused = false; // 記錄是否已暫停
02.添加判斷
// 游戲核心邏輯
void GameCore()
{
if (_paused) return;
...
// 消除一個(gè)點(diǎn)
void ClearOnePoint()
{
if (_paused) return;
...
// 填補(bǔ)一行被消除的
void FillUpOneLineByCleared()
{
if (_paused) return;
...
旋轉(zhuǎn)方塊、左移方塊、右移方塊中也添加判斷。請(qǐng)參考附件的代碼。
03.實(shí)現(xiàn)暫停、繼續(xù)
添加一個(gè)空格鍵的事件:
// 按鍵 - 空格鍵
if (Input.GetKeyDown(KeyCode.Space))
{
_paused = !_paused;
}
04.制作暫停標(biāo)記
在場(chǎng)景中添加一個(gè)空物體,重命名為PauseHint,坐標(biāo)(196, 30, 0)。
然后導(dǎo)入圖片,拖放到PauseHint下:

記得設(shè)置圖片的屬性:
Pixels Per Unit:1
Pivot:Bottom Left
然后設(shè)置PauseHint默認(rèn)為不激活(隱藏)。
暫停標(biāo)記沒(méi)有任何行為,所以不需要添加代碼,直接拖動(dòng)到導(dǎo)演對(duì)象的Pause Hint Obj上即可:

05.閃爍暫停標(biāo)記
在導(dǎo)演類添加方法:
// 閃爍暫停提示
void BlinkPauseHint()
{
PauseHintObj.SetActive(!PauseHintObj.activeSelf);
}
修改空格按鍵事件:
// 按鍵 - 空格鍵
if (Input.GetKeyDown(KeyCode.Space))
{
_paused = !_paused;
if (_paused)
{
InvokeRepeating("BlinkPauseHint", 0, 0.2f);
}
else
{
CancelInvoke("BlinkPauseHint");
PauseHintObj.SetActive(false);
}
}
那么,暫停游戲功能就完成了。
代碼鏈接:https://pan.baidu.com/s/1H9_s0TrQWsJCZ8f8bjsvGg
提取碼:xxvp