本节,我们先实现暂停功能,再制作场景中的暂停对象。
功能非常简单,添加一个暂停标记,然后在键盘事件、核心逻辑、消除方块中添加一个判断即可。
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