每个游戏会话仅显示一次画布面板

问题描述

我正在为我的 Unity 项目开发 UI,我需要在我们开始玩的关卡上显示我的主菜单。例如,如果我们从第 1 级开始玩,则应该显示 MainMenu 画布面板,并且不应在整个游戏会话的任何其他级别显示。它应该只在像这样重新启动游戏后显示。我打开游戏,显示 Game Begins (Level1) 主菜单,我们玩到第 10 级并关闭游戏。我们稍后打开它,游戏现在应该从第 10 级的场景开始,主菜单画布在其上方。我们点击播放我们玩游戏。所以我希望这个画布每个会话只显示一次,而不是每个级别。 实现这个主菜单在场景上的叠加。如下图所示,我在每个级别都以这种方式设置了画布。enter image description here

解决方法

static bool 怎么样。将脚本附加到您的画布,该脚本将根据静态布尔值是假还是真来激活或停用画布游戏对象。静态 bool 将导致它在每个游戏中创建一次并在所有 LoadMenuOnce 脚本(或您决定将其添加到的任何脚本)中共享。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LoadMenuOnce : MonoBehaviour
{
    protected static bool menuLoadedOnce = false;
    // Start is called before the first frame update
    void Start()
    {
        if (menuLoadedOnce == false)
        {
            gameObject.SetActive(true);
            menuLoadedOnce = true;
        }
        else
        {
            gameObject.SetActive(false);
        }
    }
}