55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using UnityEngine;
|
||
|
||
public class LoseScript : MonoBehaviour
|
||
{
|
||
// 1. Паттерн Одиночки (Singleton) - делает скрипт глобально доступным
|
||
public static LoseScript Instance { get; private set; }
|
||
|
||
// Ссылка на объект меню, которую нужно установить в Инспекторе
|
||
[SerializeField] private GameObject loseMenuUI;
|
||
|
||
void Awake()
|
||
{
|
||
// Гарантируем, что в сцене будет только один экземпляр
|
||
if (Instance != null && Instance != this)
|
||
{
|
||
Destroy(this);
|
||
}
|
||
else
|
||
{
|
||
Instance = this;
|
||
}
|
||
}
|
||
|
||
void Start()
|
||
{
|
||
// Сбрасываем время при запуске сцены
|
||
Time.timeScale = 1f;
|
||
|
||
if (loseMenuUI != null)
|
||
{
|
||
// Скрываем меню при старте
|
||
loseMenuUI.SetActive(false);
|
||
}
|
||
}
|
||
|
||
// Этот метод будет вызываться из любого места, чтобы показать меню
|
||
public void ShowLoseMenu()
|
||
{
|
||
if (loseMenuUI != null)
|
||
{
|
||
loseMenuUI.SetActive(true);
|
||
Time.timeScale = 0f; // Замораживаем игру
|
||
Debug.Log("Игрок проиграл! Активировано меню проигрыша.");
|
||
}
|
||
}
|
||
|
||
// Логика проигрыша при столкновении с этим объектом (например, пол проигрыша)
|
||
private void OnCollisionEnter(Collision collision)
|
||
{
|
||
if (collision.gameObject.GetComponent<BallController>() != null )
|
||
{
|
||
ShowLoseMenu();
|
||
}
|
||
}
|
||
} |