Saltar al contenido

C#: Desarrollo Multiplataforma con .NET y Unity

C# (C-Sharp) es uno de los lenguajes de programación más versátiles y potentes del mercado actual. Desarrollado por Microsoft, se ha convertido en el pilar fundamental para diversas industrias, desde el entretenimiento interactivo hasta los sistemas empresariales de alto rendimiento. De igual forma te dejamos nuestro blog para que lo puedas visitar para que conozcas más temas, visitar blog.

Aquí tienes una descripción detallada de sus tres aplicaciones principales:


Unity es el motor de videojuegos más popular del mundo, y C# es su lenguaje oficial. Permite crear juegos tanto en 2D como en 3D para prácticamente cualquier plataforma (PC, consolas, móviles y VR).

  • Por qué destaca: Ofrece un equilibrio perfecto entre rendimiento y facilidad de uso. Los desarrolladores utilizan C# para controlar el comportamiento de los personajes, la física, la inteligencia artificial y la interfaz de usuario.
  • Ejemplos:
    • Hollow Knight: Un aclamado juego de plataformas 2D con mecánicas complejas.
    • Pokémon GO: Utiliza Unity para la integración de realidad aumentada en dispositivos móviles.
    • Cuphead: Famoso por su estilo artístico, desarrollado íntegramente en Unity con C#.

C# nació para Windows, y sigue siendo la mejor opción para crear software nativo que aproveche al máximo el sistema operativo de Microsoft.

  • Tecnologías clave:
    • WPF (Windows Presentation Foundation): Para interfaces modernas y visualmente ricas usando XAML.
    • WinForms: Para aplicaciones rápidas y herramientas internas.
    • WinUI 3: El estándar más reciente para la interfaz de Windows 11.
  • Ejemplos:
    • Visual Studio / VS Code: Gran parte del ecosistema de desarrollo de Microsoft está construido o extendido con C#.
    • Paint.NET: Un editor de imágenes potente y gratuito escrito en C#.
    • Software de Gestión (ERP/CRM): Muchas aplicaciones bancarias y de inventario que corren en oficinas de todo el mundo.

.NET es el marco de trabajo (framework) que permite que C# funcione en cualquier lugar. Con el lanzamiento de .NET 6, 7 y 8, el lenguaje se volvió completamente multiplataforma (Windows, Linux, macOS).

  • ASP.NET Core: Es el estándar para crear servicios web y APIs de alto rendimiento que procesan millones de solicitudes.
  • MAUI (Multi-platform App UI): Permite escribir un solo código en C# y desplegarlo como app en Android, iOS, macOS y Windows.
  • Ejemplos:
    • Stack Overflow: Uno de los sitios web más grandes del mundo funciona bajo ASP.NET.
    • Microservicios de Azure: Gran parte de la infraestructura en la nube utiliza .NET por su seguridad y velocidad.
    • APIs Bancarias: Sistemas que requieren alta seguridad y transacciones rápidas.

Para que veas la legibilidad del lenguaje, aquí tienes cómo se vería un «script» básico que podría usarse tanto en una app de consola como en un objeto de Unity:

C#

using System;

public class Jugador {
    public string Nombre { get; set; }
    public int Salud { get; set; }

    public void RecibirDaño(int cantidad) {
        Salud -= cantidad;
        Console.WriteLine($"{Nombre} ha recibido daño. Salud restante: {Salud}");
    }
}

Para empezar en Unity con C#, el primer paso es entender que Unity funciona mediante Componentes. Imagina que cada objeto en tu juego es un contenedor vacío y tú le añades «scripts» (archivos de C#) para darle vida.

Aquí tienes una guía rápida para configurar tu primer proyecto y entender la lógica básica:

  • Unity Hub: Descarga e instala Unity Hub. Desde aquí gestionarás tus versiones del motor (recomiendo una versión LTS o Long Term Support por su estabilidad).
  • Editor de Código: Instala Visual Studio (o VS Code). Durante la instalación de Unity, asegúrate de marcar la casilla de «Microsoft Visual Studio», ya que esto instalará las herramientas necesarias para que el autocompletado de C# funcione correctamente.

En Unity, los scripts heredan de una clase llamada MonoBehaviour. Esta clase te da acceso a dos funciones fundamentales que verás siempre:

  • Start(): Se ejecuta una sola vez cuando el juego inicia.
  • Update(): Se ejecuta en cada «frame» (cuadro) del juego. Si tu juego corre a 60 FPS, esto se ejecuta 60 veces por segundo.

Ejemplo de un script de movimiento básico:

C#

using UnityEngine;

public class MovimientoJugador : MonoBehaviour
{
    public float velocidad = 5.0f;

    void Update()
    {
        // Detecta las teclas (flechas o WASD)
        float movimientoHorizontal = Input.GetAxis("Horizontal");
        float movimientoVertical = Input.GetAxis("Vertical");

        // Crea un vector de dirección
        Vector3 direccion = new Vector3(movimientoHorizontal, 0, movimientoVertical);

        // Mueve al objeto en el espacio
        transform.Translate(direccion * velocidad * Time.deltaTime);
    }
}

Para avanzar rápido, te sugiero enfocarte en estos tres pilares:

  1. Transform: Todos los objetos tienen posición, rotación y escala. Con C# manipularás estos valores constantemente.
  2. Física (RigidBody): Si quieres que tu personaje salte o choque, le añades un componente Rigidbody y lo controlas mediante código usando fuerzas.
  3. Colisiones (OnCollisionEnter): Es la forma en que el código detecta cuando un objeto toca a otro (por ejemplo, cuando el jugador recoge una moneda).

Si en algún momento sientes que el desarrollo de juegos es muy denso, C# permite pivotar fácilmente:

  • Consola: Practica pura lógica de programación creando una calculadora o un sistema de inventario simple sin gráficos.
  • Windows Forms: Crea una ventana con un botón que, al presionarlo, mueva un archivo de una carpeta a otra.

Para conectar el código con el juego, no basta con escribir el script; hay que «casarlo» con un objeto en la escena. Aquí tienes los pasos exactos para crear tu primer objeto funcional:


  1. Abre Unity y crea un proyecto nuevo (3D).
  2. En la ventana Hierarchy (Jerarquía), haz clic derecho y selecciona 3D Object > Cube. Este será tu «jugador».
  3. En la ventana Inspector (a la derecha), verás el componente Transform. Asegúrate de que la posición esté en $(0, 0, 0)$.
  1. En la ventana Project (abajo), haz clic derecho en la carpeta Assets.
  2. Selecciona Create > C# Script y ponle el nombre ControladorJugador (ojo: el nombre del archivo debe ser idéntico al nombre de la clase dentro del código).
  3. Arrastra el archivo del script desde la ventana Project y suéltalo directamente sobre el Cubo en la ventana Hierarchy.

Haz doble clic en el script para abrirlo en tu editor (Visual Studio). Vamos a escribir un código que haga que el cubo se mueva y cambie de color al presionar la barra espaciadora:

C#

using UnityEngine;

public class ControladorJugador : MonoBehaviour
{
    public float velocidad = 10f;
    public Color colorSalto = Color.red;

    void Update()
    {
        // Movimiento simple en el eje X (izquierda/derecha)
        float movH = Input.GetAxis("Horizontal") * velocidad * Time.deltaTime;
        transform.Translate(movH, 0, 0);

        // Detectar si presionamos espacio
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // Cambiamos el color del material del cubo
            GetComponent<Renderer>().material.color = colorSalto;
            Debug.Log("¡Saltaste!");
        }
    }
}

Una de las mejores cosas de C# en Unity es que si declaras una variable como public (como hicimos con velocidad), aparecerá un campo de texto en la interfaz de Unity.

  • No necesitas volver al código para cambiar la velocidad.
  • Puedes probar diferentes valores mientras el juego está corriendo para ver cuál se siente mejor.

Es vital entender que Unity no lee el código de arriba a abajo una sola vez. Como es un motor de tiempo real, funciona en un bucle infinito:

  1. Input: ¿El usuario presionó una tecla?
  2. Logic (C#): Tu script calcula la nueva posición.
  3. Rendering: Unity dibuja el objeto en esa nueva posición.
  4. Repetir: Esto sucede decenas de veces por segundo.

Como conclusión, C# es mucho más que un simple lenguaje de programación; es un ecosistema completo que permite llevar una idea desde el código puro hasta una aplicación comercial exitosa, sin importar el dispositivo.

Aquí te resumo los puntos clave de por qué este lenguaje es tan relevante hoy en día:

  • Versatilidad Total: Es de los pocos lenguajes que te permiten ser un desarrollador de videojuegos profesional en Unity, un arquitecto de software para Windows o un experto en Backend con .NET, todo usando la misma sintaxis.
  • Curva de Aprendizaje Amigable: C# tiene una estructura lógica y organizada. Su integración con herramientas como Visual Studio hace que encontrar errores sea sencillo, lo que lo convierte en una excelente opción tanto para principiantes como para expertos.
  • Alto Rendimiento y Modernidad: Aunque es fácil de leer, no sacrifica potencia. Con las últimas versiones de .NET, C# compite en velocidad con lenguajes de bajo nivel, siendo capaz de procesar millones de datos en segundos.
  • Soporte y Futuro: Al estar respaldado por Microsoft y tener una comunidad gigante (especialmente en la industria del gaming), aprender C# garantiza que siempre habrá documentación, librerías y oportunidades laborales disponibles.

En definitiva, si buscas un lenguaje que «lo haga todo» con elegancia y estabilidad, C# es la herramienta definitiva para convertir conceptos abstractos en productos interactivos y funcionales.