🎮 UnityDocs

Errores de compilación de C# (CS0103, CS0246, CS0029…)

Los errores de compilación más comunes en Unity explicados en cristiano: qué significan CS0103, CS0246, CS0029, CS1061 y CS0117, por qué salen y cómo arreglarlos. Y por qué no puedes darle a Play.

🐛 ErrorPrincipiante✅ RevisadoUnity 6.0 LTSActualizado 2026-07-15
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 6 min

"All compiler errors have to be fixed before you can enter Play Mode"#

Si al pulsar Play ves este mensaje, tienes un error de compilación: tu C# no compila, así que Unity no puede ejecutar nada. En la Console (con el filtro de errores activado) verás el error concreto, con su código CSxxxx, el archivo y la línea. Corrígelo y podrás jugar.

Doble clic en el error

Haz doble clic en el error de la Console: Unity abre el archivo en la línea exacta. La mitad del trabajo es llegar al sitio correcto.

Los errores más comunes#

CS0103 — "The name 'X' does not exist"#

Usas un nombre que C# no conoce. Causas típicas:

  • Está mal escrito (mayúsculas incluidas: transformTransform).
  • La variable está declarada en otro sitio (fuera de su ámbito).
  • Olvidaste declararla.
C#
// ❌ CS0103: 'velocidadd' no existe (typo)
transform.Translate(Vector3.up * velocidadd);
// ✅
transform.Translate(Vector3.up * velocidad);

CS0246 — "The type or namespace 'X' could not be found"#

C# no encuentra un tipo. Casi siempre falta un using (el "import" del namespace):

C#
// ❌ CS0246: no encuentra 'List'
List<int> numeros = new List<int>();
// ✅ añade arriba:
using System.Collections.Generic;

Lo mismo con TextMeshProUGUI (using TMPro;), NavMeshAgent (using UnityEngine.AI;), etc. También sale si escribiste mal el nombre del tipo o el nombre del archivo no coincide con la clase.

CS0029 / CS0266 — "Cannot convert type 'A' to 'B'"#

Intentas meter un valor de un tipo en una variable de otro incompatible:

C#
// ❌ CS0029: no puede convertir float en int automáticamente
int vida = 3.5f;
// ✅ decide qué quieres
float vida = 3.5f;
int vidaEntera = (int)3.5f;   // conversión explícita (da 3)

CS1061 — "'A' does not contain a definition for 'B'"#

Llamas a un método o propiedad que ese tipo no tiene. Causas: nombre mal escrito, el tipo no es el que crees, o falta un using que añade métodos de extensión.

C#
// ❌ CS1061: Rigidbody no tiene 'velocidad'
rb.velocidad = Vector3.up;
// ✅ (y además en Unity 6 es linearVelocity)
rb.linearVelocity = Vector3.up;

CS0117 — "'A' does not contain a definition for 'B'" (miembro estático)#

Como el anterior pero con miembros estáticos: Mathf.Clampp(...) (typo) o usar algo que no existe en esa clase.

Cómo atacarlos, en orden#

🛠️ Decisión de ingeniería
  • 1. Lee el primer error de la lista (los siguientes suelen ser consecuencia del primero)
  • 2. Doble clic para ir a la línea
  • 3. Identifica el código CSxxxx y traduce: ¿nombre que no existe (0103)?, ¿falta un using (0246)?, ¿tipos que no encajan (0029)?, ¿método que no existe (1061)?
  • 4. Corrige, guarda, y deja que Unity recompile
  • 5. Repite con el siguiente error real
Arregla de arriba abajo

Un solo fallo (una llave } que falta, un using ausente) puede generar decenas de errores en cascada. No te agobies por el número: arregla el primero y muchos desaparecerán solos. Cuenta las llaves { } y los ; si aparecen errores raros y numerosos.

Errores frecuentes (que causan estos errores)#

  • Mayúsculas/minúsculas: C# distingue Update de update.
  • Falta un using (la causa nº1 de CS0246).
  • El nombre del archivo no coincide con la clase (MiScript.cs debe contener class MiScript).
  • Una llave }, un paréntesis o un ; que falta o sobra.
  • Usar un nombre de Unity 6 antiguo (velocity en vez de linearVelocity).

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

Los errores CSxxxx impiden entrar en Play porque tu C# no compila. Los más comunes: CS0103 (nombre que no existe: typo o ámbito), CS0246 (tipo no encontrado: falta un using), CS0029 (tipos incompatibles), CS1061 (método/propiedad que no existe). Doble clic para ir a la línea, arregla el primero (muchos son cascada) y vigila mayúsculas, using, llaves y que el archivo coincida con la clase.

Fuentes y para profundizar