Код IT
← Каталог

Разработка на Unity — Работа с коллайдерами — триггеры и физические столкновения

Фрагмент из «Разработка на Unity»: Работа с коллайдерами — триггеры и физические столкновения.

csharp spinoffencyclopedia9-04-razrabotka-igr-3 embed URL статья в энциклопедии
C# main.cs
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class GameHud : MonoBehaviour
{
    [SerializeField] private Slider healthBar;
    [SerializeField] private TMP_Text ammoText;
    [SerializeField] private GameObject winPanel;
    [SerializeField] private GameObject losePanel;

    void OnEnable()
    {
        if (GameManager.Instance != null)
            GameManager.Instance.StateChanged += Refresh;
    }

    void OnDisable()
    {
        if (GameManager.Instance != null)
            GameManager.Instance.StateChanged -= Refresh;
    }

    void Start() => Refresh();

    void Refresh()
    {
        var gm = GameManager.Instance;
        if (gm == null) return;

        healthBar.value = gm.Health / 100f;
        ammoText.text = gm.Ammo.ToString();

        winPanel.SetActive(gm.IsGameOver && gm.HasWon);
        losePanel.SetActive(gm.IsGameOver && !gm.HasWon);
    }
}
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class GameHud : MonoBehaviour
{
    [SerializeField] private Slider healthBar;
    [SerializeField] private TMP_Text ammoText;
    [SerializeField] private GameObject winPanel;
    [SerializeField] private GameObject losePanel;

    void OnEnable()
    {
        if (GameManager.Instance != null)
            GameManager.Instance.StateChanged += Refresh;
    }

    void OnDisable()
    {
        if (GameManager.Instance != null)
            GameManager.Instance.StateChanged -= Refresh;
    }

    void Start() => Refresh();

    void Refresh()
    {
        var gm = GameManager.Instance;
        if (gm == null) return;

        healthBar.value = gm.Health / 100f;
        ammoText.text = gm.Ammo.ToString();

        winPanel.SetActive(gm.IsGameOver && gm.HasWon);
        losePanel.SetActive(gm.IsGameOver && !gm.HasWon);
    }
}