Happy_Forest/Assets/Scripts/Cheat Sheets/Unity API Referenz.cs

180 lines
8.4 KiB
C#
Raw Normal View History

2026-08-02 21:58:26 +02:00
namespace UnityAPIReference
{
using UnityEngine;
using UnityEngine.SceneManagement; // WICHTIG: Für den Szenen-Wechsel
using UnityEngine.UI; // WICHTIG: Für klassische UI (Text, Buttons)
public class UnityAPIReferenz : MonoBehaviour
{
[Header("Referenzen auf andere Komponenten")]
public Rigidbody meinRigidbody;
public Renderer meinRenderer;
public AudioSource meineAudioquelle;
public Animator meinAnimator;
public Light meinLicht;
public Text meinUI_Text;
void Start()
{
// ========================================================================
// 1. DAS EIGENE GAMEOBJECT KONTROLLIEREN
// ========================================================================
// Das Objekt komplett de-aktivieren (verschwindet aus der Welt, Updates stoppen)
gameObject.SetActive(false);
gameObject.SetActive(true);
// Namen und Tag auslesen oder ändern
gameObject.name = "Neuer_Name_im_Inspector";
gameObject.tag = "Player"; // (Achtung: Der Tag muss im Editor existieren!)
// Das Objekt nach 3 Sekunden komplett aus dem Speicher löschen
Destroy(gameObject, 3f);
// ========================================================================
// 2. TRANSFORM (Position, Rotation, Skalierung & Hierarchie)
// Transform hat JEDES GameObject standardmäßig.
// ========================================================================
// Position setzen (Vector3 = X, Y, Z Koordinaten)
transform.position = new Vector3(0, 5, 0); // Absolute Welt-Position
transform.localPosition = new Vector3(0, 0, 0); // Position relativ zum "Eltern-Objekt"
// Rotation setzen (Quaternion ist komplex, daher nutzen wir Euler-Winkel in Grad)
transform.rotation = Quaternion.Euler(0, 90, 0); // Dreht das Objekt um 90 Grad auf der Y-Achse
// Skalierung (Größe) ändern
transform.localScale = new Vector3(2, 2, 2); // Macht das Objekt doppelt so groß
// Direkte Bewegungen (ohne Physik!)
transform.Translate(Vector3.forward * 5f); // 5 Meter nach vorne schieben
transform.Rotate(Vector3.up, 45f); // Um 45 Grad drehen
// Hierarchie (Parenting) ändern
// transform.SetParent(anderesGameObject.transform); // Hängt dieses Objekt an ein anderes an
transform.SetParent(null); // Macht das Objekt wieder komplett unabhängig (Root-Ebene)
// ========================================================================
// 3. KOMPONENTEN FINDEN UND AUSLESEN (Sehr wichtig!)
// ========================================================================
// Holt die Komponente "BoxCollider", die auf demselben GameObject liegt
BoxCollider meinCollider = GetComponent<BoxCollider>();
if (meinCollider != null)
{
meinCollider.enabled = false; // Schaltet die Kollision ab
}
// ========================================================================
// 4. PHYSIK (Rigidbody)
// ========================================================================
if (meinRigidbody != null)
{
// Einen Impuls-Schub geben (z.B. für einen Sprung oder eine Explosion)
meinRigidbody.AddForce(Vector3.up * 500f, ForceMode.Impulse);
// Die aktuelle Geschwindigkeit direkt überschreiben oder auslesen
meinRigidbody.linearVelocity = new Vector3(0, 10, 0);
// Schwerkraft für dieses Objekt deaktivieren
meinRigidbody.useGravity = false;
// Masse ändern
meinRigidbody.mass = 50f;
// IsKinematic: Wenn true, wird das Objekt NICHT mehr von Physik (Schwerkraft/Stöße)
// beeinflusst, kann aber per Skript bewegt werden und rammt andere Objekte weg.
meinRigidbody.isKinematic = true;
}
// ========================================================================
// 5. GRAFIK & MATERIALIEN (Renderer)
// ========================================================================
if (meinRenderer != null)
{
// Das Objekt unsichtbar machen (es bleibt aber da und hat noch Kollision!)
meinRenderer.enabled = false;
// Die Farbe des Materials ändern
meinRenderer.material.color = Color.red; // Standard-Farben
meinRenderer.material.color = new Color(0.5f, 0.2f, 0.8f, 1f); // RGBA (Rot, Grün, Blau, Alpha/Transparenz)
}
// ========================================================================
// 6. AUDIO & SOUNDS
// ========================================================================
if (meineAudioquelle != null)
{
meineAudioquelle.volume = 0.5f; // Lautstärke (0.0 bis 1.0)
meineAudioquelle.pitch = 1.2f; // Tonhöhe (1.0 = normal, < 1 = tiefer/langsamer)
meineAudioquelle.Play(); // Sound abspielen
meineAudioquelle.Stop(); // Sound stoppen
}
// ========================================================================
// 7. ANIMATIONEN (Animator)
// Setzt Parameter, die du im Animator-Fenster definiert hast
// ========================================================================
if (meinAnimator != null)
{
meinAnimator.SetBool("IsRunning", true); // Eine Checkbox umschalten
meinAnimator.SetFloat("Speed", 5.5f); // Einen Komma-Wert übergeben
meinAnimator.SetTrigger("Jump"); // Einen einmaligen Impuls feuern
}
// ========================================================================
// 8. LICHT
// ========================================================================
if (meinLicht != null)
{
meinLicht.intensity = 10f; // Helligkeit
meinLicht.color = Color.yellow; // Lichtfarbe
meinLicht.range = 50f; // Reichweite des Lichts
}
// ========================================================================
// 9. ZEIT KONTROLLIEREN (Time-Klasse)
// ========================================================================
// Zeitlupen-Effekt (0.5 = halbe Geschwindigkeit, 0 = Spiel pausiert!)
// Time.timeScale = 0.5f;
// Wieviel Zeit seit Spielstart vergangen ist (in Sekunden)
float zeit = Time.time;
// ========================================================================
// 10. SZENEN & LEVEL WECHSELN
// ========================================================================
// Lädt die Szene mit dem Namen "Level_02" (Muss in den Build-Settings hinzugefügt sein!)
// SceneManager.LoadScene("Level_02");
// Lädt die aktuelle Szene neu (z.B. nach einem Game Over)
// SceneManager.LoadScene(SceneManager.GetActiveScene().name);
// ========================================================================
// 11. HILFS-MATHEMATIK (Die Unity Mathf Klasse)
// ========================================================================
// Clamp: Begrenzt einen Wert auf ein Minimum und Maximum
float lebenspunkte = 150f;
lebenspunkte = Mathf.Clamp(lebenspunkte, 0f, 100f); // Setzt den Wert zwingend auf max 100 zurück
// Random: Eine Zufallszahl generieren
int zufallsZahl = Random.Range(1, 10); // Zahl zwischen 1 und 9 (Int-Maximum ist exklusiv!)
float zufallsKomma = Random.Range(0f, 5.5f); // Float-Maximum ist inklusiv.
// Lerp (Linear Interpolation): Einen sanften Übergang zwischen zwei Werten berechnen
// Hier: Berechne den Wert genau in der Mitte (0.5f) zwischen 10 und 20 -> Ergebnis: 15
float sanfterWert = Mathf.Lerp(10f, 20f, 0.5f);
}
}
}