Menu
CoddyTech

Dezimalzahlen brauchen ein f

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 3 von 85.

Ganze Zahlen reichen für ein Spiel nicht aus: Ein Ballon schwebt bei 3.5, ein Spieler läuft mit 4.2 Einheiten pro Sekunde. Zahlen mit einem Dezimalpunkt haben ihren eigenen Typ: float:

float speed = 4.2f;

Achte auf das f am Ende. In C# ist ein einfaches 4.2 ein double, ein weiterer Dezimaltyp, und Unitys Positionen und Größen sind Floats. Das f teilt C# mit, dass die Zahl ein Float ist. Lässt du es weg, weigert sich Unity, das Spiel zu starten, und zeigt diesen Fehler in der Konsole an:

error CS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type

Das sieht beängstigend aus, bedeutet aber nur: „Füge das f hinzu.“ Eine ganze Zahl wie 2 braucht kein f: Sie passt so, wie sie ist, in einen Float.

Eine weitere Überraschung: Wenn du zwei ints dividierst, bleibt nur der ganzzahlige Teil übrig, also ist 7 / 2 gleich 3. Schreibe 7 / 2f, um 3.5 zu erhalten.

challenge icon

Aufgabe

Einfach

Korrigiere das Skript des Ballons und lass ihn dann höher und größer schweben.

  1. Drücke auf „Spielen“: In der Konsole wird in der Zeile mit height der Fehler CS0664 angezeigt.
  2. Ändere diese Zeile zu float height = 3.5f;.
  3. Ändere die Zeile für die Größe zu float size = 1.5f;. Jede Zahl mit einem Dezimalpunkt benötigt ein f.

Drücke auf „Spielen“: Der Ballon schwebt auf 3.5, mit anderthalbfacher Größe. Klicke dann auf „Prüfen“.

Probier es selbst

using UnityEngine;

public class Balloon : MonoBehaviour
{
    void Start()
    {
        float height = 2.5;
        float size = 1;

        transform.position = new Vector3(0, height, 0);
        transform.localScale = new Vector3(size, size, size);
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground