180 lines
8.4 KiB
C#
180 lines
8.4 KiB
C#
|
|
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);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|