Проблема в том, что когда я нажимаю escape на go baco в главном меню, я не могу уничтожить оригинальные объекты в главном меню, а также те же объекты в сцене DontDestroyOnLoad.
У меня в главном меню сцены 3 объекта Player, Game Manager, Scene Loader, к каждому из которых прикреплен скрипт DontDestroy:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DontDestroy : MonoBehaviour
{
private void Awake()
{
if (GameManager.backToMainMenu == false)
{
DontDestroyOnLoad(transform);
}
}
}
В объекте Game Manager также прикреплен еще один скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public SceneLoader sceneLoader;
public PlayerController playerController;
public CamMouseLook camMouseLook;
public static bool backToMainMenu = false;
public static bool togglePauseGame;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.P))
{
PauseGame();
}
if (Input.GetKeyDown(KeyCode.Escape))
{
BackToMainMenu();
}
}
public void PauseGame()
{
togglePauseGame = !togglePauseGame;
if (togglePauseGame == true)
{
playerController.enabled = false;
camMouseLook.enabled = false;
Time.timeScale = 0f;
}
else
{
playerController.enabled = true;
camMouseLook.enabled = true;
Time.timeScale = 1f;
}
}
private void BackToMainMenu()
{
sceneLoader.LoadScene(0);
playerController.enabled = false;
camMouseLook.enabled = false;
Cursor.lockState = CursorLockMode.None;
Time.timeScale = 0f;
backToMainMenu = true;
}
}
Когда я нажимаю клавишу выхода, он переключает сцены между 1 и 0 и загружает сцену 0 в главное меню. Но тогда результат таков:
Так что я нажал escape и вернулся в главное меню, но DontDestroyOnLoad также все еще загружен не удален, поэтому у меня есть это 3 Объекты Player, Game Manager, Scene Loader продублированы.
Если я снова нажму на новую игру, сцена главного меню будет удалена, поэтому не будет дублирования, но когда вернется в главное меню, DontDestroyOnLoad останется.