[Resumen de la publicación 5 del desarrollo del juego] (La diferencia entre el objeto cara a cara y el proceso cara a cara, polimorfismo, CG, modo de diseño, corrutina del hilo de proceso, almacenamiento del área de memoria, principio de la corrutina)

Descubrí que muchas cosas realmente conocen la idea general de esto en sus cabezas, pero si te piden que lo digas, realmente no puedes
reprimir una oración, por lo que aún tenemos que estar concentrados en ... Tierra. Un problema es que no podemos verlo bien.

La diferencia entre el objeto facial y el proceso facial.

1. El proceso cara a cara es una idea de programación centrada en el proceso, y el objeto cara a cara es un lenguaje de programación con el objeto como la unidad básica de estructura del programa.
2. El proceso cara a cara es para analizar los pasos para resolver el problema y luego implementarlo paso a paso, llamando al
objeto de cara una vez a la vez. Tener un tipo estático único, y posiblemente varios tipos dinámicos, compartir datos y operaciones
. 3. El cara a cara El proceso de caras no admite las características de los objetos con caras (polimorfismo, herencia). No se permite mezclar
objetos de estado persistente y con caras lógicas para representarlos internamente Un puntero, cualquier operación en este objeto se realiza a través de este puntero para manipular el propiedades y métodos del objeto

¿Qué es el polimorfismo?

El polimorfismo es: la referencia del tipo padre apunta al objeto del tipo hijo.
Versión popular: la misma operación actúa sobre diferentes objetos y produce diferentes efectos.

Beneficios: 1. Mejorar la capacidad de reutilización del programa (la modificación de la clase principal puede hacer que la clase derivada cambie)
2. Mejorar la escalabilidad y la capacidad de mantenimiento (la función de la clase derivada puede ser llamada por la clase base)

¿Como paso?
Agregue la palabra clave virtual delante de la función de la clase base para anular la función en la clase derivada. La función se llamará de acuerdo con el tipo real del objeto en tiempo de ejecución.
Si el objeto es una clase derivada, use la función de la clase derivada. Si es una clase base, utilice la función de la clase derivada. Utilice funciones de clase base

GC

GC es el
papel del recolector de basura :
1. Mejorar la abstracción del desarrollo de software
2. Los programadores no pueden preocuparse por la administración de la memoria
3. Aclarar los módulos y reducir el acoplamiento
4. Reducir los errores causados ​​por un manejo inadecuado
5. El uso de la memoria es más eficiente

Patrones de diseño comunes y escenarios de aplicación

Modo singleton

El modo singleton es un modo de diseño de uso común.
La garantía de su estructura principal incluye una clase especial llamada clase singleton. A través del modo singleton, se puede garantizar que solo haya una instancia de una clase en el sistema
y que la instancia sea fácilmente accesible accesible al mundo exterior. Control de esta instancia para controlar y ahorrar recursos

Escenario : si solo desea un objeto de una determinada clase en el sistema, el modo singleton es una buena solución

Modo de fábrica

El patrón de fábrica es principalmente para proporcionar una interfaz para crear objetos.

Escenario: no es posible prever qué tipo de instancia debe crearse durante la codificación. El
sistema no debe depender de los detalles de cómo se crea, combina y expresa la instancia de clase de producto.

Modo de estrategia

La familia de algoritmos se define y encapsula por separado para que se puedan reemplazar entre sí. Los cambios de algoritmo en este modo son independientes de los clientes que utilizan el algoritmo.

Escenario:
Una cosa, hay muchas soluciones que se pueden implementar.
Puedo decidir qué método implementar en cualquier momento. Se pueden
agregar muchas soluciones en el futuro. El
modelo de estrategia puede hacer que el cambio de la solución no afecte a los clientes que usan la solución.

Modo de observador

También conocido como modelo de publicación / suscripción, define dependencias de uno a varios entre objetos.
Cuando un objeto cambia, el estado de todos los dependientes se notificará y se actualizará automáticamente.

Escenas

Para actualizar el estado de un objeto, otros objetos deben actualizarse sincrónicamente, y el número de otros objetos es dinámicamente variable. El
objeto solo necesita notificar a otros objetos de su propia actualización sin conocer los detalles de otros objetos.

Modo iterador

Proporcionar una forma de acceder secuencialmente a los diversos elementos de un objeto agregado sin exponer la representación interna del objeto.

Escenas

Cuando necesite acceder a un objeto agregado, sin importar cuáles sean estos objetos y necesite atravesarlo, use el patrón de iterador. El
contenedor stl es un buen ejemplo del patrón de iterador.

La diferencia entre proceso, hilo y corrutina

Proceso: tiene su propia pila independiente, ni pila compartida ni pila compartida, y está programado por el sistema operativo.
Subproceso: tiene su propia pila independiente, pila compartida y está programado por el sistema operativo. Coroutine
: pila compartida y pila independiente como subprocesos, el programador programa manualmente la corrutina

Una aplicación generalmente tiene un subproceso principal y varios subprocesos auxiliares. Los subprocesos se ejecutan en paralelo. La corrutina se puede abrir en el subproceso para permitir que el programa se ejecute en un momento específico.

Diferencia entre procesos y subprocesos
1. El proceso es la unidad más pequeña de asignación de recursos , el subproceso está ejecutando la unidad más pequeña
2. El proceso tiene espacio independiente, no hay subproceso, el proceso es independiente de los recursos, los subprocesos comparten la
gran 3. Sobrecarga Pequeño
4. El subproceso es la unidad básica de programación del procesador. El proceso no es

La diferencia entre la corrutina y el subproceso: la corrutina evita la programación sin sentido, que puede mejorar el rendimiento, los programadores deben asumir la responsabilidad de la programación
y los subprocesos pierden la capacidad de CPU múltiple de los subprocesos estándar

Principio de corrutina:

Durante la ejecución de la corrutina en la unidad, a través de yield return xxx, el programa se suspende y se ejecuta el siguiente contenido.
Tenga en cuenta que la corrutina no es un hilo. Antes de encontrar yield return xxx, el método de la corrutina y el método general son los Es decir, después de que la ejecución del programa encuentra yield return xxx,
se ejecutará el programa después del método startcontinue (). Todavía está en modo de un solo subproceso. Solo suspende temporalmente el contenido después de yield return xxx y espera la ejecución en un tiempo específico.

Procesamiento por lotes dinámico, procesamiento por lotes estático

Procesamiento por lotes dinámico:
Unity viene con procesamiento por lotes dinámico, que debe activarse en la unidad, lo que provocará el consumo de CPU.
Limitación: la
transformación del objeto debe tener el mismo factor de zoom,
usar el mismo material
y renderizar el procesamiento por
lotes estático uno por uno.
. Marque el objeto como estático en la unidad y luego enciéndalo.
Restricción de procesamiento por lotes estático :
debe mantenerse estático y no puede cambiar
los objetos del mismo material en la transformación para ser
procesados. Un lote está en línea con ~ 15K vértices

¿Cuáles son los bloques en el área de memoria y qué se almacenan por separado?

Hay cinco áreas de memoria en total:
1. Área de pila: el compilador la asigna y libera principalmente automáticamente para almacenar valores de parámetros de función y variables locales. El método de operación es similar a la pila en la estructura de datos.
2. Montón área: asignada y liberada por el programador, y almacenada nueva O el programador libera la instancia de malloc (el método de asignación es similar a la lista vinculada)
3. Área global (área estática): las variables globales y las variables estáticas se almacenan juntas, se inicializan las variables globales y variables estáticas están colocados en RW
sin inicializar las variables globales y variables estáticas se liberan automáticamente después de que los ZI extremos del programa.
de área constante 4. Texto: tiendas de cadenas constantes, y libera automáticamente después de que termine el programa.
5. Programa de área de código binario: las tiendas codigos

La diferencia entre variables globales estáticas y variables globales

1. El área de almacenamiento de ambos es el mismo que el área global (área estática)
2. Las variables globales ordinarias afectan a todo el programa de origen. Si un programa de origen tiene varios archivos de origen, esta variable global es válida para todos los archivos de origen
3.static La variable global limita su alcance al archivo fuente definido por la variable, y solo puede ser utilizada por la función de este archivo, y otros archivos fuente no pueden usar esta variable estática.

El principio de la corrutina

Cuando la unidad se está ejecutando, llamar a la corrutina es para iniciar un IEnumerator (iterador), y la corrutina comienza a ejecutarse.
Antes de la ejecución para el retorno de rendimiento, la corrutina no tiene diferencia con otras aplicaciones normales, pero regresará inmediatamente después de encontrar el rendimiento de retorno.
Y suspender temporalmente la función. Después de que el siguiente marco encuentre FixedUpdate o Update, se juzga si se cumple la condición de rendimiento de retorno.
Si se cumple, ejecútelo hacia abajo; de lo contrario, continúe colgando

Supongo que te gusta

Origin blog.csdn.net/weixin_44302602/article/details/113664307
Recomendado
Clasificación