¿Unity usa una versión diferente de C #, o es todo lo mismo? Se ve diferente de C # normal, pero hay algunos elementos de C # regulares allí.
¿Unity usa una versión diferente de C #, o es todo lo mismo? Se ve diferente de C # normal, pero hay algunos elementos de C # regulares allí.
Respuestas:
Como se indicó en otras respuestas, Unity 4.x utiliza una versión modificada de Mono basada en Mono 2.6
En su mayor parte, esto es compatible con .Net 2.0 , aunque no he logrado rastrear una lista de compatibilidad específica de Mono 2.6.
Se ve diferente de C # normal, pero hay algunos elementos de C # regulares allí.
Como se menciona en uno de los comentarios sobre su pregunta, esto probablemente se deba a la API de scripting particular de Unity en lugar del lenguaje en sí.
Como ejemplo, una gran cantidad de código en un proyecto típico de Unity está contenido en subclases de una clase llamada MonoBehavior. Estos son componentes que se colocan en GameObjects dentro del entorno de Unity Editor. Esta arquitectura conduce al código C # que se ve diferente al código C # típico (para mí de todos modos) de varias maneras:
Hablando en términos prácticos, la característica más grande del lenguaje C # que echo de menos en la versión actual de C # de Unity es el soporte para funciones asíncronas y palabras clave relacionadas. Un concepto similar en Unity son las corutinas . Estos se ejecutan en el subproceso principal, por lo que no son asíncronos verdaderos, pero sí permiten que el código de larga ejecución se divida en varios cuadros. El subprocesamiento múltiple de nivel inferior todavía es compatible.
async
en C # tampoco es asíncrono verdadero como en multihilo: también se ejecuta en el hilo principal. Las mayores diferencias, desde una perspectiva de uso, entre las rutinas y asíncrono son los tiempos en que se ejecuta el código.
Unity 4 usa Mono 2.6 , que es una implementación completa del marco .NET, incluido el lenguaje C #.
No estoy seguro de cómo se ve diferente, pero tenga en cuenta que Unity admite varios idiomas, todos los cuales funcionan además del mismo tiempo de ejecución Mono. ¿Es posible que estés confundiendo C # con UnityScript ?
La unidad usa C # regular.
Por otra parte, cuando escriba C # en Unity, utilizará muchas de sus bibliotecas, pero que yo sepa, todo lo posible en C # es posible en Unity, aparte de las diferencias que se enumeran a continuación:
Las áreas más específicas de .Net relacionadas con Windows Forms y ASP están fuera de los límites a través de Unity.
Si bien puede usar Visual Studio para editar y errores en tiempo de compilación, debe compilar y ejecutar en Unity IDE.
Unity usa Mono, que es una implementación de código abierto de .Net, lo que significa que hay ligeras diferencias.
La pregunta de si la versión de C # utilizada por Unity es diferente de una C # "normal" ha sido respondida por otras publicaciones. Dado que está solicitando explícitamente ciertos elementos que pueden diferir de una versión tan regular, compartiré la única diferencia menor que noté al comparar el C # que uso en el trabajo (es decir, C # 4.0 en Visual Studio 2010 y superior) y C # en Unity, que es que no puedo usar los valores predeterminados para los parámetros en las definiciones de funciones. es decir, debe configurar su proyecto con más cuidado para usar una versión más nueva de C #. Vea este enlace para más explicaciones.
Editar: dejo esta respuesta ya que hasta donde sé, este es un malentendido que le sucede a mucha gente.