Menu
CoddyTech

Decimais precisam de um f

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 3 de 85.

Números inteiros não são suficientes para um jogo: um balão flutua em 3.5, um jogador corre a 4.2 unidades por segundo. Números com ponto decimal têm seu próprio tipo, float:

float speed = 4.2f;

Observe o f no final. Em C#, um 4.2 simples é um double, outro tipo decimal, e as posições e os tamanhos do Unity são floats. O f informa ao C# que o número é um float. Se você omitir esse caractere, o Unity se recusará a iniciar o jogo, com este erro no Console:

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 assustador, mas significa apenas “adicione o f”. Um número inteiro como 2 não precisa de f: ele cabe em um float como está.

Mais uma surpresa: dividir dois ints mantém apenas a parte inteira, então 7 / 2 é 3. Escreva 7 / 2f para obter 3.5.

challenge icon

Desafio

Fácil

Corrija o script do balão e, em seguida, faça-o flutuar mais alto e ficar maior.

  1. Pressione “Jogar”: o Console mostra o erro CS0664 na linha height.
  2. Altere essa linha para float height = 3.5f;.
  3. Altere a linha do tamanho para float size = 1.5f;. Todo número com ponto decimal precisa de f.

Pressione “Jogar”: o balão flutua a 3.5, com uma vez e meia o seu tamanho. Depois, pressione “Verificar”.

Experimente você mesmo

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 as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity