上一篇:【unity】10.胜利判定
修改格子的生成位置
上一篇中我们虽然判定了胜负,但是只是将结果打印在console中,并没有在游戏界面上显示。因此这一篇我们加入界面显示
首先在canvas中新建一个空组件命名为Buttons,用来存放所有生成的格子
修改这个组件的性质如下:
然后修改GameLogic
中指定的ParentButtonPrefab
,将其设为刚才的Buttons
点击运行即可看到按钮都生成在Buttons下面了
添加胜利失败界面
然后我们在Canvas下再新建两张图片作为胜利失败图像。注意unity的Canvas中,越靠下的组件在显示的时候越靠前,会遮挡住靠后的组件。因此当我们在最下面添加两张图片作为结算界面时,图片会挡住后面的格子,使得我们无法再用鼠标点击到格子。
用PS画两张图作为结算界面
将其添加到WinResult和LoseResult组件中,并修改图片尺寸,然后将其设为隐藏(即默认隐藏,等我们需要的时候再显示)
然后修改GameLogic.cs
如下:
public GameObject winResult;
public GameObject loseResult;
public void ClickMine(GameObject _button)
{
int _row = _button.GetComponent<MinesweeperButton>().GetRow();
int _col = _button.GetComponent<MinesweeperButton>().GetCol();
if (_button.GetComponent<MinesweeperButton>().GetHasFlag() == false)
{
if (bombList.Contains(_row * maxCol + _col))
{
_button.GetComponent<Image>().color = Color.red;
_button.GetComponent<Button>().enabled = false;
//Debug.Log("You Lose!");
loseResult.SetActive(true);
}
else
{
DFSMine(_row, _col);
if (enableNum <= maxBomb)
{
//Debug.Log("You win!");
winResult.SetActive(true);
}
}
}
}
然后在GameLogic的Inspector里设置两个结算界面:
运行结果
运行结果如下:结算判定出现后,格子无法再次被点击