我试图在游戏过程中弹出文本框并暂停游戏,这似乎在很大程度上起作用。我发现它有点奇怪,并且无法弄清楚发生了什么:只要我一直按动键(特别是LEFT)我就能保持移动。
我的游戏是基于平铺和转弯的,因此动作只是测试地图数组,然后跳跃角色(如下所示):
if (Input.GetButtonDown ("Horizontal"))
{
if (Input.GetAxis ("Horizontal") > 0)
{
if (TileArray.WalkableTile (newPosition.x + 1, newPosition.y) == true)
{
TileArray.ToggleWalkable (newPosition.x, newPosition.y, true);
newPosition.x += 1;
PlayerMoved = true;
}
}
else if (Input.GetAxis ("Horizontal") < 0)
{
if (TileArray.WalkableTile (newPosition.x - 1, newPosition.y) == true)
{
TileArray.ToggleWalkable (newPosition.x, newPosition.y, true);
newPosition.x -= 1;
PlayerMoved = true;
}
}
}
我用来暂停和显示文本框的代码是:
public void StartDialog(int Counter)
{
Time.timeScale = Time.timeScale = 0;
InDialog = true;
DialogCounter = Counter;
DialogCanvas.enabled = true;
ClickCounter = 0;
DialogText.text = DialogArray [DialogCounter][ClickCounter];
UpdateDialogPic(DialogArray[DialogCounter][ClickCounter]);
}
使用鼠标单击循环显示文本是否仅为1个框或多个文本框链似乎无关紧要。除此之外,一切似乎都工作得很好,无论我是否等待向左或向左按下并不重要 - 只要我一开始就不停止,我可以走地图或直到我击中东西。
答案 0 :(得分:0)
您需要注意有关Time.timeScale
的两个主要事实。
当timeScale设置为零时,游戏基本上会暂停,如果你所有的 函数与帧速率无关。
和
如果降低timeScale,建议也降低 Time.fixedDeltaTime相同的金额。
您可以对代码进行以下更改
// introduce a new variable
bool isPaused
// for the pausing/resuming action
if(isPaused)
{
Time.timeScale = 1;
isPaused = !isPaused;
}
else
{
Time.timeScale = 0;
isPaused = !isPaused;
}
// On your 'if (Input.GetButtonDown ("Horizontal"))' line
if (Input.GetButtonDown ("Horizontal") && !isPaused)