Menu
CoddyTech

Los decimales necesitan una f

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 3 de 85.

Los números enteros no bastan para un juego: un globo flota a 3.5, un jugador corre a 4.2 unidades por segundo. Los números con punto decimal tienen su propio tipo, float:

float speed = 4.2f;

Fíjate en la f del final. En C#, un 4.2 sin más es un double, otro tipo decimal, y las posiciones y los tamaños de Unity son valores float. La f le indica a C# que el número es un float. Si la omites, Unity se niega a iniciar el juego y muestra este error en la consola:

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

Parece aterrador, pero solo significa «añade la f». Un número entero como 2 no necesita f: cabe en un float tal como está.

Una sorpresa más: al dividir dos int, se conserva solo la parte entera, así que 7 / 2 es 3. Escribe 7 / 2f para obtener 3.5.

challenge icon

Desafío

Fácil

Corrige el script del globo y luego haz que flote más alto y sea más grande.

  1. Pulsa «Jugar»: en la Consola aparece el error CS0664 en la línea de height.
  2. Cambia esa línea por float height = 3.5f;.
  3. Cambia la línea de tamaño por float size = 1.5f;. Todos los números con punto decimal necesitan una f.

Pulsa «Jugar»: el globo flota a 3.5, con un tamaño una vez y media mayor. Después, pulsa «Comprobar».

Pruébalo tú mismo

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);
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity