我有一个具有多个级别的游戏,每个级别都有6个场景,游戏直接开始而没有任何菜单场景,并且当玩家打开游戏时,他可以从他已经达到的最后一个场景继续。
我只想在游戏开始时实例化某些元素(例如最佳比分,轻按等),我的意思是应该实例化在游戏开始时只有一次(以他到达的级别为准)。
我在GameManager中尝试了这段代码,但是它实例化了每个场景中的元素:
public GameObject PlayButton;
bool GameHasEnded = false;
public float RestartDelay = 2f;
public float NextLevelDelay = 5f;
public int level_index;
private static bool loaded = false;
private void Start()
{
if (!loaded)
{
loaded = true;
level_index = PlayerPrefs.GetInt("Last_Level");
SceneManager.LoadScene(level_index);
}
GameObject canvas = GameObject.Find("Canvas");
GameObject play = Instantiate(PlayButton, canvas.transform.position, Quaternion.identity);
play.transform.SetParent(canvas.transform, false);
}
public void CompleteLevel()
{
Invoke("NextLevel", NextLevelDelay);
}
public void EndGame()
{
if (GameHasEnded == false)
{
GameHasEnded = true;
Invoke("Restart", RestartDelay);
}
}
void NextLevel()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex +1);
level_index = SceneManager.GetActiveScene().buildIndex + 1;
PlayerPrefs.SetInt("Last_Level", level_index);
PlayerPrefs.Save();
}
void Restart()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().path);
}
答案 0 :(得分:0)
您已经有一个带有if
标志static
的{{1}}块
因为在那里加载了另一个场景,所以您需要类似的第二个标记,例如
loaded