montzions ui pausenmenü ui lebns ui nachladen pausen menü neues digsein

This commit is contained in:
NBTEMP\bib
2026-07-16 15:09:38 +02:00
parent c320f54ec9
commit 7cc9554e6a
343 changed files with 106043 additions and 50 deletions
+21
View File
@@ -0,0 +1,21 @@
using UnityEngine;
using TMPro; // WICHTIG: Erforderlich für TextMeshPro!
public class AmmoUI : MonoBehaviour
{
[Header("Referenzen")]
[Tooltip("Ziehe hier dein TextMeshPro Text-Objekt rein")]
public TextMeshProUGUI ammoText;
[Tooltip("Ziehe hier das Objekt mit deinem WeaponReload-Skript rein")]
public WeaponReload weapon;
void Update()
{
if (ammoText != null && weapon != null)
{
// Zeigt z. B. "30 / 30" im Textfeld an
ammoText.text = weapon.currentAmmo + " / " + weapon.maxAmmo;
}
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d012b46a6ebe1e34598d94f22195a13e
+18
View File
@@ -0,0 +1,18 @@
using UnityEngine;
using TMPro; // Erforderlich für TextMeshPro
public class HealthUI : MonoBehaviour
{
[Header("Referenzen")]
public TextMeshProUGUI healthText;
public PlayerHealth playerHealth;
void Update()
{
if (healthText != null && playerHealth != null)
{
// Zeigt z. B. "HP: 100 / 100" an
healthText.text = "HP: " + playerHealth.currentHealth + " / " + playerHealth.maxHealth;
}
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2820b4f73584b72408d4d3609f434403
+42
View File
@@ -0,0 +1,42 @@
using UnityEngine;
public class PauseMenu : MonoBehaviour
{
[Header("UI Elemente")]
public GameObject pauseMenuUI; // Das Pausenmenü-Panel
public GameObject hudUI; // Die Lebens- und Munitionsanzeige (HUD)
private bool isPaused = false;
void Update()
{
// Überprüft, ob die ESC-Taste gedrückt wurde
if (Input.GetKeyDown(KeyCode.Escape))
{
if (isPaused)
{
ResumeGame();
}
else
{
PauseGame();
}
}
}
public void PauseGame()
{
pauseMenuUI.SetActive(true); // Pausenmenü anzeigen
hudUI.SetActive(false); // Lebens- & Munitionsanzeige ausblenden
Time.timeScale = 0f; // Spielzeit anhalten (optional, aber empfohlen)
isPaused = true;
}
public void ResumeGame()
{
pauseMenuUI.SetActive(false); // Pausenmenü ausblenden
hudUI.SetActive(true); // Lebens- & Munitionsanzeige wieder anzeigen
Time.timeScale = 1f; // Spielzeit weiterlaufen lassen
isPaused = false;
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e4a749aaa304ec14b98518e63fda8cdb
+37 -35
View File
@@ -1,51 +1,53 @@
//Oliver
using UnityEngine;
using UnityEngine.SceneManagement;
public class PausenManager : MonoBehaviour
{
private bool isOn = false;
[SerializeField] GameObject Can;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
Can.SetActive(false);
}
// Damit andere Skripte (wie deine Waffe) wissen, ob pausiert ist
public static bool GameIsPaused = false;
// Ziehe dein Pause-Menü UI-Panel hier im Inspector rein
public GameObject pauseMenuUI;
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
isOn = true;
show();
if (GameIsPaused)
{
Resume();
}
else
{
Pause();
}
}
}
public void show()
public void Resume()
{
if(isOn = true)
{
Can.SetActive(true);
}
else
{
Can.SetActive(false);
}
pauseMenuUI.SetActive(false);
Time.timeScale = 1f; // Zeit läuft wieder normal
GameIsPaused = false;
// Maus wieder verstecken und im Spiel festhalten
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
public void going()
void Pause()
{
Can.SetActive(false);
show();
pauseMenuUI.SetActive(true);
Time.timeScale = 0f; // Spiel friert ein
GameIsPaused = true;
// Maus anzeigen und entsperren, damit du klicken kannst
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
public void lobby (string sceneName)
public void QuitGame()
{
SceneManager.LoadScene(sceneName);
Debug.Log("Spiel wird verlassen...");
Application.Quit(); // Beendet das Spiel (funktioniert nur im fertigen Build, nicht im Editor)
}
public void Quit()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
}
}
+46
View File
@@ -0,0 +1,46 @@
using UnityEngine;
public class PlayerHealth : MonoBehaviour
{
[Header("Gesundheitseinstellungen")]
public int maxHealth = 100;
public int currentHealth;
void Start()
{
currentHealth = maxHealth; // Startet mit 100 Leben
}
// Funktion, um Schaden zu bekommen
public void TakeDamage(int damage)
{
currentHealth -= damage;
// Verhindert, dass das Leben unter 0 fällt
if (currentHealth < 0)
{
currentHealth = 0;
}
if (currentHealth == 0)
{
Die();
}
}
// Optional: Funktion zum Heilen
public void Heal(int amount)
{
currentHealth += amount;
if (currentHealth > maxHealth)
{
currentHealth = maxHealth;
}
}
void Die()
{
Debug.Log("Spieler ist gestorben!");
// Hier kannst du z.B. einen Game Over Screen anzeigen oder die Szene neu laden
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: db77dcbb78925b543b84b7789c1903b9
+76
View File
@@ -0,0 +1,76 @@
using System.Collections;
using UnityEngine;
public class WeaponReload : MonoBehaviour
{
[Header("Munitionseinstellungen")]
public int maxAmmo = 30; // Maximale Munition im Magazin
public int currentAmmo; // Aktuelle Munition
public float reloadTime = 1.5f; // Wie lange das Nachladen dauert (in Sekunden)
private bool isReloading = false; // Verhindert Doppelklicks / Aktionen während des Nachladens
void Start()
{
currentAmmo = maxAmmo; // Beim Start ist das Magazin voll
}
void Update()
{
// Während nachgeladen wird, keine Aktionen zulassen
if (isReloading)
return;
// --- PUNKT 1: Auslösen auf R ODER wenn Magazin leer ist ---
// 1. Manuelles Nachladen mit R (nur wenn Magazin nicht schon voll ist)
if (Input.GetKeyDown(KeyCode.R) && currentAmmo < maxAmmo)
{
StartCoroutine(Reload());
return;
}
// 2. Automatisches Nachladen beim Schießen, wenn das Magazin leer (<= 0) ist
if (Input.GetButtonDown("Fire1"))
{
if (currentAmmo > 0)
{
Shoot();
}
else
{
// Magazin ist leer -> automatisch nachladen!
StartCoroutine(Reload());
}
}
}
void Shoot()
{
// Nur schießen, wenn das Pausemenü NICHT offen ist
if (PausenManager.GameIsPaused) return;
currentAmmo--;
Debug.Log("Schuss gefeuert! Verbleibende Munition: " + currentAmmo);
// Hier deinen normalen Schuss-Code einfügen (Raycast, Bullet-Prefab, Ton etc.)
}
// Coroutine für die Nachlade-Verzögerung
IEnumerator Reload()
{
isReloading = true;
Debug.Log("Nachladen gestartet...");
// Hier könntest du z.B. eine Nachlade-Animation oder einen Sound abspielen:
// animator.SetTrigger("Reload");
// Warten, bis die Nachladezeit abgelaufen ist
yield return new WaitForSeconds(reloadTime);
// --- PUNKT 2: Munition wieder voll wenn fertig ---
currentAmmo = maxAmmo;
isReloading = false;
Debug.Log("Nachladen abgeschlossen! Munition wieder voll: " + currentAmmo);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0a3d6d3eb3a1b7845801a59185c759a3