第四十节 暂停游戏

本节,我们先实现暂停功能,再制作场景中的暂停对象。

功能非常简单,添加一个暂停标记,然后在键盘事件、核心逻辑、消除方块中添加一个判断即可。

01.暂停标记
bool _paused = false;               // 记录是否已暂停
02.添加判断
// 游戏核心逻辑
void GameCore()
{
    if (_paused) return;
...

// 消除一个点
void ClearOnePoint()
{
    if (_paused) return;
...

// 填补一行被消除的
void FillUpOneLineByCleared()
{
    if (_paused) return;
...

旋转方块、左移方块、右移方块中也添加判断。请参考附件的代码。

03.实现暂停、继续

添加一个空格键的事件:

// 按键 - 空格键
if (Input.GetKeyDown(KeyCode.Space))
{
    _paused = !_paused;
}
04.制作暂停标记

在场景中添加一个空物体,重命名为PauseHint,坐标(196, 30, 0)。
然后导入图片,拖放到PauseHint下:


记得设置图片的属性:
Pixels Per Unit:1
Pivot:Bottom Left

然后设置PauseHint默认为不激活(隐藏)。

暂停标记没有任何行为,所以不需要添加代码,直接拖动到导演对象的Pause Hint Obj上即可:


05.闪烁暂停标记

在导演类添加方法:

// 闪烁暂停提示
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

你可能感兴趣的:(第四十节 暂停游戏)