Nuevo: grupo en vivo para hacer y publicar tu primer juego

Anotate

C# para Unity desde Cero: Variables, If, Funciones, Arrays y For

L
Lautaro Bravo de la Serna
•28 de octubre de 2026•10 min de lectura
C# para Unity desde Cero: Variables, If, Funciones, Arrays y For

Resumen rápido

  • →Una variable es una caja con nombre que guarda un dato: int vidas = 3;
  • →Un if ejecuta código solo si se cumple una condición. Para comparar se usa ==, no =.
  • →Una función agrupa código con un nombre para llamarlo cuando quieras, y puede recibir y devolver datos.
  • →Un array guarda muchos datos del mismo tipo; un for los recorre. Los índices arrancan en 0.

Para hacer juegos en Unity no necesitás saber todo C#: con cinco conceptos ya podés programar movimiento, vidas, enemigos y puntajes. Este resumen sale del módulo de programación del curso Unity De Cero a Pro de Codearte, que arranca exactamente desde acá antes de tocar cualquier juego. Si todavía no elegiste motor, mirá Unity vs Godot.

📝

Tu primer script

En la ventana Project, clic derecho, Create, C# Script (C# se lee "C sharp"). Abrilo y escribí esto:

Prueba.cs
using UnityEngine;

public class Prueba : MonoBehaviour
{
    void Start()
    {
        print("Hola mundo");
    }
}
  • Todo lo que está dentro de las llaves de Start se ejecuta una vez, cuando arranca el juego.
  • print (o Debug.Log) muestra el texto en la ventana Console. Es tu mejor herramienta para ver qué está pasando.
  • Cada instrucción termina con ;, como el punto de una oración.
  • Para que corra, arrastrá el script a un objeto de la escena y dale Play. Un script que no está en ningún objeto no hace nada.
  • El código se lee de arriba hacia abajo, línea por línea.
📦

Variables

Una variable es una caja con nombre que guarda algo. Se declara con tipo, nombre y valor:

Prueba.cs
int manzanas = 10;          // números enteros
float velocidad = 5.5f;     // números con coma
string nombre = "Pepito";   // texto
bool estaVivo = true;       // verdadero o falso
TipoGuardaEjemplo en un juego
intEnteros, positivos o negativosVidas, monedas, nivel actual
floatNúmeros con comaVelocidad, tiempo, porcentaje de vida
stringTexto, entre comillasNombre del jugador, diálogos
booltrue o false¿Está en el piso? ¿Tiene la llave?
⚠️

La coma es un punto, y el float lleva f

En programación los decimales se escriben con punto: 5.5, no 5,5. Y en C#, un número con punto sin nada más es un double, así que para guardarlo en un float hay que agregarle una f: 5.5f. Si te la olvidás, Unity marca error.

➕

Cambiar el valor

Prueba.cs
int puntos = 0;

puntos = puntos + 10;   // ahora vale 10
puntos += 10;           // lo mismo, más corto: 20
puntos++;               // suma 1: 21
puntos--;               // resta 1: 20
puntos *= 2;            // multiplica: 40

El = en programación no es "igual" como en matemática: significa guardá lo de la derecha en la caja de la izquierda. Ojo con dividir enteros: 2 / 3 da 0, porque entre ints se descartan los decimales. Ese bug aparece en la barra de vida.

🔀

If y else: tomar decisiones

Casi todo en un juego es una pregunta: si la vida llega a cero, perdés; si tenés la llave, se abre la puerta.

Prueba.cs
int vida = 3;

if (vida > 0)
{
    print("Sigo vivo");
}
else
{
    print("Game Over");
}
OperadorPreguntaEjemplo
==¿Es igual?vida == 0
!=¿Es distinto?nombre != ""
> y <¿Mayor? ¿Menor?puntos > record
>= y <=¿Mayor o igual? ¿Menor o igual?vida <= 0
&&Las dos cosastieneLlave && cercaDeLaPuerta
||Alguna de las dosvida <= 0 || tiempo <= 0
!Lo contrario!estaEnElPiso
El error más común: if (vida = 0). Un solo = asigna; para comparar son dos: if (vida == 0).

Podés encadenar más casos con else if: if (vida > 2) ... else if (vida > 0) ... else .... Se evalúan en orden y entra solo en el primero que se cumpla.

🧩

Funciones

Una función es un bloque de código con nombre que se ejecuta cuando lo llamás. Start es una función que Unity llama sola; print es otra. Las tuyas las tenés que llamar vos.

Prueba.cs
void Start()
{
    RecibirDanio(1);
    int total = Sumar(5, 3);   // total vale 8
}

// void: no devuelve nada. Recibe un int.
void RecibirDanio(int cantidad)
{
    vida -= cantidad;
    print("Me quedan " + vida + " vidas");
}

// int: devuelve un número con return.
int Sumar(int a, int b)
{
    return a + b;
}
  • Lo que va antes del nombre es lo que devuelve: void si no devuelve nada, int, float, bool, etc. si devuelve algo con return.
  • Lo que va entre paréntesis son los parámetros: los datos que recibe. Al llamarla le pasás los valores.
  • Si una función nunca se llama, nunca se ejecuta.
  • Si repetís el mismo código en dos lugares, probablemente debería ser una función.

🗄️

Arrays: muchos datos en una variable

¿Y si tenés diez enemigos, o un inventario? No vas a crear enemigo1, enemigo2... Para eso está el array: una colección de datos del mismo tipo.

Prueba.cs
string[] jugadores = new string[3];
jugadores[0] = "Ana";
jugadores[1] = "Leo";
jugadores[2] = "Sol";

// o crearlo ya con los valores, en una línea:
string[] enemigos = { "Slime", "Zombie", "Fantasma" };

print(jugadores[1]);        // Leo
print(jugadores.Length);    // 3
string[] jugadores = new string[3];"Ana"[0]"Leo"[1]"Sol"[2]valoríndiceLength = 3, pero el último índice es 2. jugadores[3] da error.
Un array es un estante con lugares numerados desde 0.

En Unity se usan muchísimo con variables públicas o con SerializeField: declarás public Transform[] spawnPoints; y arrastrás los objetos en el Inspector. Así funciona el spawner de prefabs e Instantiate. Si necesitás agregar y sacar elementos mientras se juega, el siguiente paso es List<T>.

🔁

El ciclo for: repetir

Un for repite un bloque de código una cantidad de veces. Tiene tres partes separadas por ;: dónde arranca, hasta cuándo sigue y cuánto avanza.

Prueba.cs
// arranca en 0; sigue mientras i < 10; suma 1 cada vuelta
for (int i = 0; i < 10; i++)
{
    print("Vuelta " + i);   // de 0 a 9
}

// recorrer un array entero
for (int i = 0; i < jugadores.Length; i++)
{
    print(jugadores[i]);
}

// lo mismo, más corto, si no necesitás el índice
foreach (string jugador in jugadores)
{
    print(jugador);
}
Usá i < jugadores.Length, con menor estricto. Con <= el for intenta leer jugadores[3], que no existe, y Unity tira IndexOutOfRangeException.
ErrorQué pasó
Falta ; o falta }Cada línea termina en ; y cada llave que abre, cierra
No se puede convertir double a floatFalta la f: 5.5f
El if siempre entra o da errorUsaste = en vez de ==
IndexOutOfRangeExceptionPediste un índice que no existe: el último es Length - 1
El script no hace nadaNo está agregado a ningún objeto de la escena
Mi función no se ejecutaNunca la llamaste

Con esto ya podés hacer tu primer script con movimiento: cómo mover un objeto en Unity. Y cuando quieras ordenar tus variables, seguí con public, private y SerializeField.

Preguntas frecuentes

¿Qué lenguaje se usa en Unity?

C# (se pronuncia "C sharp"). Es el único lenguaje oficial para programar scripts en Unity.

¿Necesito saber programar antes de aprender Unity?

No. Con variables, if, funciones, arrays y for ya podés hacer juegos completos, y se aprenden en pocos días practicando dentro de Unity.

¿Cuál es la diferencia entre int y float?

int guarda números enteros (3, -10, 200) y float guarda números con decimales (5.5f). En C#, los float llevan una f al final.

¿Qué diferencia hay entre = y ==?

= asigna un valor a una variable. == compara dos valores y devuelve true o false. En un if siempre se usa ==.

¿Por qué los arrays empiezan en 0?

Es la convención de C# y de casi todos los lenguajes: el primer elemento es el índice 0 y el último es Length - 1.

Aprendé a programar haciendo juegos

Unity De Cero a Pro arranca desde variables, if y for, sin experiencia previa, y termina con un plataformero 2D y un top down shooter 3D publicados.

Ver el curso De Cero a Pro
Tags:#unity#csharp#programacion#principiantes#tutorial
🎮

¿Quieres crear tus propios juegos?

Aprende a programar videojuegos desde cero con nuestros cursos en Unity. Más de 3,000 estudiantes ya empezaron su camino.

Ver cursos gratuitos