0% encontró este documento útil (0 votos)
14 vistas13 páginas

Clases y Código en C#

Cargado por

jgabriele.uade
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas13 páginas

Clases y Código en C#

Cargado por

jgabriele.uade
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1.

Clases en C#

● Una clase en C# es una estructura que define un tipo de dato personalizado. Puede contener:
○ Propiedades: Variables asociadas a la clase.
○ Métodos: Funciones que definen su comportamiento.
○ Eventos: Acciones que pueden ocurrir dentro de la clase.
● Las clases encapsulan datos y comportamientos relacionados, permitiendo organizar el código de
manera modular y reutilizable.
● Con las clases se pueden crear objetos, que son instancias de dicha clase.

2. Comparación de lenguajes: C, C++ y C#

● C:
○ Usado para sistemas embebidos.
○ Es eficiente porque genera código ligero y permite acceder al hardware de manera directa.
● C++:
○ Extiende las capacidades de C con programación orientada a objetos.
○ Desarrollado por Bjarne Stroustrup en 1980 (AT&T).
○ El operador ++ en su nombre indica "incremento" de las capacidades de C.
● C#:
○ Desarrollado por Microsoft como evolución de C y C++.
○ Es moderno, orientado a objetos, seguro en cuanto a tipos y sencillo de usar.

3. Variables

● Las variables son contenedores de valores que la computadora utiliza para realizar operaciones.
○ Características:
■ Nombre (identificador)
■ Tipo (dominio de valores)
■ Valor (contenido almacenado)
○ Reglas para nombres:
■ Solo letras (mayúsculas/minúsculas), números y _.
■ Debe comenzar con una letra o _.
■ Sensible a mayúsculas/minúsculas (e.g., John ≠ JOHN).
○ Ejemplos de nombres válidos: variable, t10, Counter.

Declaración e inicialización:
csharp
Copiar código
tipo nombre; // Declaración
tipo nombre = valor; // Declaración e inicialización
nombre = valor; // Asignación posterior
4. Tipos de Datos

● Numéricos:
○ Enteros: Representan valores sin decimales, en rangos según su tamaño (8, 16, 32, o 64
bits).
Ejemplo: int, long, unsigned.
○ Reales: Tienen parte entera y decimal. Ejemplo: float, double.
■ Notación científica: 3E8 = 3×1083 \times 10^83×108.
● Caracteres:
○ Un único carácter (alfabético, numérico o especial). Ejemplo: 'A', '&'.
● Cadenas: Sucesión de caracteres delimitados por comillas. Ejemplo: "Hola mundo".
● Tipos en C# adicionales:
○ Nullable: Permiten asignar null a tipos de valor: int? edad = null;.
○ Tipos numéricos específicos: byte, ushort, ulong.
○ Referencia: Ejemplo: string, object, dynamic.

5. Operadores

● Aritméticos: Suma (+), resta (-), multiplicación (*), división (/), módulo (%).
○ División por cero está prohibida. En tiempo de ejecución, genera una excepción.

Incremento/Decremento: ++ y -- para sumar/restar 1. Ejemplo:


csharp
Copiar código
contador++;
dias--;

Ternario:
csharp
Copiar código
condicion ? valor_si_verdadero : valor_si_falso;

6. Comentarios

● Se usan para documentar el código sin afectar su ejecución.


○ Comentario de línea: // texto.
○ Bloque de comentarios: /* texto */.

7. Estilo de Código
Indentación: Organiza el código para mejorar su legibilidad.
Ejemplo de código indentado:
csharp
Copiar código
if (condicion)
{
accion1();
accion2();
}

● Convenciones de nombres:
○ CamelCase: miVariablePersonal.
○ PascalCase: MiVariablePersonal.

8. Librerías
Conjunto de funciones predefinidas que pueden importarse en un programa.
Ejemplo en C#:
csharp
Copiar código
using System;
using [Link];

9. Entrada/Salida de Datos
Input: Obtener datos del usuario. Ejemplo:
csharp
Copiar código
[Link]("Ingrese su nombre:");
string nombre = [Link]();
Output: Mostrar datos al usuario. Ejemplo:
csharp
Copiar código
[Link]("Hola, " + nombre);

10. ASCII y Caracteres de Escape

● ASCII: Estándar que asigna un número a cada carácter (ej., 'A' = 65).
● Escape Characters: Permiten incluir caracteres especiales. Ejemplo:
csharp
Copiar código
[Link]("Línea 1\nLínea 2");

ASCII Code

La computadora guarda los caracteres como números. A cada carácter le corresponde un número y
viceversa.
El estándar ASCII (American Standard Code for Information Interchange) define 256 caracteres, de los
cuales los primeros 128 son de uso común.
En este estándar, las letras están ordenadas siguiendo el alfabeto latino.
ASCII fue extendido por un estándar internacional más amplio llamado UNICODE, que soporta un
mayor rango de caracteres.
Escape Characters (Secuencias de escape)

Las secuencias de escape son caracteres con funcionalidades especiales dentro de una cadena.
Por ejemplo, \n permite realizar un salto de línea.

Ejemplo:

cpp
Copiar código
#include <iostream>
int main()
{
std::printf("Iniciando programa...\n¡Bienvenido!\nHola Mundo");
}

El programa mostrará:

Copiar código
Iniciando programa…
¡Bienvenido!
Hola Mundo

Indentación

La indentación es el uso de espacios, tabuladores y saltos de línea para facilitar la lectura y comprensión
del código.

Ejemplo de código no indentado:

csharp
Copiar código
if(sheep_counter >= 120){make_a_bed(); take_a_shower(); sleep_and_dream();}
feed_the_sheepdogs();

Ejemplo indentado (K&R style):

csharp
Copiar código
if(sheep_counter >= 120)
{
make_a_bed();
take_a_shower();
sleep_and_dream();
}
feed_the_sheepdogs();
La indentación es fundamental para el mantenimiento del código y para que otros programadores puedan
entenderlo fácilmente.

Code Styling

El estilo de código o Code Style son reglas para escribir código de manera consistente y clara.
Convenciones comunes para nombres de variables y funciones:

● Camel Case: myCustomVariable


● Pascal Case: MyCustomVariable
● Hungarian Notation: nMyCustomVariable

Librerías

Una librería es un conjunto de implementaciones funcionales ya codificadas que proveen una interfaz
para realizar tareas específicas.
Permiten:

● Modularidad y reutilización.
● Crear programas complejos con menos esfuerzo.

Ejemplo en C#:

csharp
Copiar código
using System;
using [Link];

Entrada y Salida de Datos (I/O)

● Input: Cuando el humano envía datos al programa.


● Output: Cuando el programa envía información al humano.

Ejemplo de Output en C#:

csharp
Copiar código
int edad = 35;
[Link](edad);

Ejemplo de Input en C#:


csharp
Copiar código
int edad;
[Link]("Por favor ingrese su edad: ");
edad = [Link]([Link]());

Condicionales

Las computadoras solo conocen dos respuestas: true o false.


Los condicionales permiten tomar decisiones en función de estas respuestas.

Ejemplo del operador ternario:

csharp
Copiar código
int edad = 18;
string mensaje = (edad >= 18) ? "Mayor de edad" : "Menor de edad";
[Link](mensaje);

Operadores de Incremento y Decremento

● Incremento (++): Aumenta el valor en 1.


● Decremento (--): Reduce el valor en 1.

Ejemplo de uso:

csharp
Copiar código
contadorDeOvejas++;
diasParaElProximoFeriado--;

Motores de Juego

¿Qué es un motor de juego?

● Herramienta que facilita la creación de aplicaciones interactivas y videojuegos.


● Ofrece librerías de código prearmado.
● Permite integrar procesos de diseño con implementación técnica.
● Gestiona gráficos, sonido, interactividad (scripts) y física.

Motores Principales

1. Unity
● Características:
○ Basado en componentes.
○ Compatible con proyectos en 2D y 3D.
○ Popular para juegos móviles, AR/VR y proyectos indie.
● Ventajas:
○ Intuitivo.
○ Amplia comunidad y recursos.
○ Multiplataforma.
● Desventajas:
○ Difícil de optimizar en proyectos grandes.

2. Unreal Engine

● Características:
○ Enfoque en gráficos 3D de alta calidad.
○ Programación visual basada en nodos.
○ Popular en juegos AAA, simulaciones y medios interactivos.
● Ventajas:
○ Gráficos realistas.
○ Herramientas avanzadas integradas.
● Desventajas:
○ Exigente en hardware.
○ Curva de aprendizaje elevada.
○ Sólo soporta 3D.

3. Godot

● Características:
○ Código abierto (open-source) y gratuito.
○ Adecuado para juegos indie, prototipos y experimentación.
○ Compatible con proyectos en 2D y 3D.
● Ventajas:
○ Liviano y rápido.
○ No requiere instalación.
● Desventajas:
○ Documentación limitada.
○ Menos flexible para proyectos a gran escala.

Modelado 3D

Herramientas Principales

1. Blender

● Versátil, puede realizar diversas tareas:


○ Modelado, texturizado, iluminación, renderizado.
○ Esculpido, animación, nodos y simulaciones.
2. 3D Studio Max

● Especializado en arquitectura e interiores.


● Funciones clave:
○ Modelado, texturizado y renderizado (Corona, Arnold, VRay).

3. Maya

● Foco en animación y rigging de personajes.

4. Cinema 4D

● Ideal para Motion Graphics y simulaciones físicas.


● Renderizado con Redshift y Octane.

5. ZBrush

● Líder en escultura digital.


● Excelente manejo de modelos con alto número de polígonos.

6. Houdini

● Enfocado en efectos especiales y simulaciones de física.


● Ejemplos: partículas, fuego, agua y explosiones.

Texturizado

● Herramientas: Substance Painter, Quixel Mixer.


● Texturas: Imágenes aplicadas a los modelos 3D.
● Materiales (Shaders): Configuran cómo interactúan las texturas con la luz y el entorno.
○ Mapas comunes:
■ Diffuse/Albedo: Color base.
■ Roughness: Aspereza.
■ Normal: Relieve simulado.
■ Height: Relieve real.
■ Ambient Occlusion: Sombras de contacto.
■ Metallic Los mapas de Roughness y Metallic en Unity son un mismo canal.
● Mapas UV: Proyección de la malla 3D sobre un plano 2D.

Conceptos Clave en 3D

● Topología: Organización de vértices, aristas y caras en una malla.


● Low Poly vs. High Poly:

○ Más polígonos = Mayor carga de hardware.


○ Level of Detail (LOD), Cuando un GameObject en la escena está muy lejos de la
cámara, la cantidad de detalles que se pueden ver en ella se reduce considerablemente.
Sin embargo, se utilizará el mismo número de triángulos para representar el objeto,
aunque no se notará el detalle. Una técnica de optimización llamada Level Of Detail
(LOD) permite reducir el número de triángulos representados para un objeto a medida
que aumenta la distancia de la cámara. Siempre que sus objetos no estén todos cerca de la
cámara al mismo tiempo, LOD reducirá la carga en el hardware y mejorará el
rendimiento de renderizado.
○ Escalabilidad La escalabilidad es la capacidad del software para adaptarse a las
necesidades de rendimiento a medida que el número de usuarios crece, las transacciones
aumentan y la base de datos empieza a sufrir degradamiento del performance por las
cargas crecientes.
○ UX = Experiencia de Usuario UI = Interfaz
● Optimización:
○ Usar Quads (4 lados) en lugar de N-gons (5 o más).
○ Convertir a Tris (3 lados) para videojuegos.

_______________________________

Un SDK (Software Development Kit) es un conjunto de herramientas, bibliotecas y documentación


que permite a los desarrolladores crear aplicaciones para una plataforma específica. Facilita la integración
de funcionalidades y servicios en el software, como APIs, controladores y ejemplos de código.

Unity: Componentes y Funciones Clave

1. Definición: Motor popular para desarrollar experiencias interactivas en 2D/3D.


2. Interfaz principal:
○ Jerarquía: Lista de objetos en la escena.
○ Inspector: Configuración de cada objeto.
○ Vista de Escena y Game: Construcción y visualización del proyecto.
i. Shading Mode: Usaremos shaded.
ii. Visibilidad de elementos. Acá podemos activar o desactivar la skybox, niebla,
y otros efectos.
iii. Inspector Contiene todas las propiedades y parámetros que modificaremos, así
como los componentes.
○ Proyecto El panel de Proyecto tiene todos nuestros assets. Esto incluye modelos 3D,
texturas, materiales, etc.
3. Elementos básicos:
○ Game view, Es una pestaña al lado de Scene, y nos muestra la visión de la cámara.
○ GameObjects: Todo en la escena (cámaras, luces, modelos).
○ Componentes: Añaden funcionalidades como Transform (posición), Audio Source,
Rigidbody, etc.
4. Importación desde Blender:
○ Exportar en formato FBX.
○ Verificar escalas y texturas.
5. Componentes:
○ Transform Define la Posición, Rotación y Escala del objeto. Tiene en cuenta su Origen.
Chequear que la escala esté en 1,1,1.
○ Mesh Renderer Configura su visibilidad en cámara y su interacción con la iluminación.
○ Animator Se le pone a un objeto para que sea [Link] de un Animator
Controller, que dentro tendrá los Animation Clips
○ Material Al aplicarle un material, aparece como un componente.
6. Otros componentes,
○ Collider Crea una caja (u otra figura) que marca un límite a su alrededor. Esto hace que
nos choquemos con ese objeto, o bien que al atravesarlo ocurra algo (Este segundo caso es
que sea Trigger)
○ Audio Source Podemos configurarlo para que los objetos emitan sonidos. Va
acompañado de un Audio Listener en la cámara.
○ Script Cuando creemos scripts, se pondrán al objeto como componentes. Nuestras
variables públicas (ya vamos a verlo) aparecerán como propiedades.

Materiales
Crear Materiales: Podemos crear materiales o usar los extraídos del modelo. Siempre conviene rearmar
los materiales en Unity, así es más controlable. No suelen venir iguales del software de 3D que utilicemos.

● Propiedades Acá podemos poner los mapas de textura que ya estuvimos trabajando.
● Marcar Normal Map Hace falta marcar la imagen como tal, seleccionandola en el
panel de Proyecto y viendo su inspector

Animación en Unity

1. Dónde animar:
○ Blender: Control avanzado para animaciones complejas.
○ Unity: Rápido para acciones simples o lógica interactiva.
2. Proceso en Unity:
○ Crear Clips (movimientos, transiciones).
○ Usar Animation Controller para definir cómo se comportan las animaciones en el
juego. Es lo que se llama máquina de estados. El rectángulo naranja contiene la
animación. En las flechas podemos definir un flujo, con [Link] condiciones
dependen de triggers y otras configuraciones que veremos más adelante.

Animación

● En Blender:
○ Control total de movimientos y deformaciones complejas.
● En Unity:
○ Adecuado para animaciones simples o integradas con lógica de juego.
○ Uso de Animation Clips y Animator Controllers.
○ ica.

Exportación desde Blender a Unity

● Formato recomendado: FBX.


● Configurar escalas y utilizar medidas reales.
● Materiales pueden extraerse o reemplazarse en Unity.

Scripts creados en Unity

1. Estructura de un Script
○ Cada elemento tiene un script con una clase que engloba todo.
○ El nombre de la clase debe coincidir con el nombre del script, de lo contrario no
funcionará.
○ Las líneas que comienzan con using traen funcionalidades de Unity al código (como
bibliotecas predefinidas).
○ Esta clase hereda de MonoBehaviour, lo que otorga funcionalidades clave, como:
■ Ejecutar código en eventos del ciclo de vida del juego: Start() y Update().
■ Acceder a componentes de otros objetos (como Renderer, Collider) y responder a
entradas del jugador o cambios en la escena.
2. Eventos principales
○ Start(): Se ejecuta una vez al comenzar el juego.
○ Update(): Se ejecuta una vez por frame, ideal para lógica que debe actualizarse
continuamente.

Variables en Unity

● Una variable es un contenedor que almacena datos como números, texto o referencias a objetos, y
se utiliza para controlar el comportamiento del juego.
● También pueden almacenar materiales u otros elementos de los componentes definidos en el
Inspector de Unity.
1. Variables públicas y privadas
○ Públicas (public)
■ Son visibles y modificables desde el Inspector.
■ Pueden ser asociadas al script arrastrándolas al espacio del componente en el
Inspector.
○ Privadas (private)
■ Solo pueden modificarse desde el código.

Ejemplo de declaración de una variable pública


csharp
Copiar código
public int numero = 1;

2.
○ public: La variable es visible en el Inspector.
○ int: Tipo de dato entero.
○ numero = 1;: Inicializa la variable con el valor 1. Este valor puede ser cambiado en el
Inspector.
3. Tipos de datos comunes en Unity
○ int: Números enteros (e.g., int score = 10;).
○ float: Números decimales de precisión simple (e.g., float speed = 5.5f;).
○ bool: Valores de verdadero o falso (e.g., bool isAlive = true;).
○ string: Texto (e.g., string playerName = "Lucas";).
○ Vector3: Posiciones en un espacio 3D con valores x, y, y z (e.g., Vector3 position = new
Vector3(0, 1, 0);).
○ GameObject: Referencia a un objeto de la escena (e.g., public GameObject enemy;).
○ Transform: Componente que incluye posición, rotación y escala de un objeto (e.g.,
Transform playerTransform;).
○ Material: Controla la apariencia visual de un objeto (e.g., public Material material;).

Componentes en Unity

Unity utiliza un sistema de componentes para definir el comportamiento de los objetos en una escena.
Estos se configuran desde el Inspector o mediante código.

1. Componentes principales
○ Transform
■ Define la posición, rotación y escala de un objeto.
■ Asegúrate de que la escala esté en 1,1,1.
○ Mesh Renderer
■ Configura la visibilidad del objeto en cámara y su interacción con la iluminación.
○ Animator
■ Permite animar un objeto.
■ Requiere un Animator Controller, que contiene los Animation Clips.
○ Material
■ Controla la apariencia visual al ser aplicado a un objeto.
○ Collider
■ Crea un límite alrededor del objeto.
■ Puede configurarse como "Trigger" para activar eventos al atravesarlo.
○ Audio Source
■ Permite que el objeto emita sonidos.
■ Necesita un Audio Listener (generalmente en la cámara).
○ Script
■ Añadido como componente para personalizar el comportamiento del objeto.
■ Las variables públicas del script aparecerán como propiedades en el Inspector.

Condicionales en Unity

Los condicionales permiten ejecutar acciones basadas en ciertas condiciones.

Estructura básica
csharp
Copiar código
if (condición) {
// Código si la condición se cumple
} else {
// Código si la condición no se cumple
}
Ejemplo práctico
csharp
Copiar código
int numero = 15;

if (numero < 20) {


[Link]("El número es menor a 20");
} else {
[Link]("El número es mayor o igual a 20");
}

1.
○ Si numero es menor a 20, se imprime en consola: "El número es menor a 20".
○ De lo contrario, se imprime: "El número es mayor o igual a 20".

También podría gustarte