¿Cómo difieren C # y UnityScript en el desarrollo de Unity? [cerrado]

13

Además de las diferencias de lenguaje obvias, ¿en qué se diferencian UnityScript y C # al desarrollar juegos en Unity3D?

  • ¿Hay una diferencia de rendimiento notable?
  • ¿El código de UnityScript está empaquetado tal cual? En caso afirmativo, ¿ayuda esto a la capacidad de modificación del juego?
  • ¿Es posible usar bibliotecas desarrolladas para un idioma mientras se desarrolla en el otro?
  • ¿Se pueden mezclar los dos idiomas en el mismo proyecto de Unity? codificando algunas partes en C # y otras en UnityScript?
Kostas
fuente
No hay componente de escritura sabio. Pero C # permite cosas adicionales como las importaciones de DLL. Aparte de eso, es una "elección". Y completamente subjetivo. No lo olvides, también hay Boo en el que puedes escribir tu código.
Sidar
2
Pregunta útil con respuestas objetivas: parece injusto que se haya cerrado.
UpTheCreek
1
Hay dos razones principales por las que esta pregunta se cerró, y no tienen que ver con la utilidad de la pregunta o la objetividad de las respuestas. Primero, la publicación hace más de una pregunta no relacionada. En segundo lugar, algunas de las preguntas formuladas están demasiado orientadas a la discusión y / o dos son amplias para ser apropiadas según lo escrito. Qué tan "útil" o popular es una pregunta, o qué tan buenas son las respuestas, son independientes de si la pregunta es apropiada o no para el sitio.

Respuestas:

12

¿Hay una diferencia de rendimiento notable?

No. Técnicamente, existe una diferencia de rendimiento muy pequeña , pero no es lo suficientemente significativa como para basar su elección de idioma en la mayoría de los casos.

¿Es posible usar bibliotecas desarrolladas para un idioma mientras se desarrolla en el otro?

Si. Siempre y cuando se asegure de mantener la estructura de carpetas recomendada por el desarrollador de la biblioteca, se puede acceder a esa biblioteca desde cualquier idioma. Esto tiene que ver con el orden de compilación de Unity . Sin embargo, algunas características en IDEs, como autocompletar, pueden no funcionar para la biblioteca elegida. (EDITAR: esto se puede solucionar mediante el uso del complemento gratuito UnityVS para Visual Studio).

¿Es posible mezclar los dos idiomas en el mismo proyecto de Unity codificando algunas partes en C # y otras en Javascript?

De nuevo si. Sin embargo, se complica rápidamente, ya que debes asegurarte de que todo esté compilado en el orden correcto. Si bien es técnicamente posible, te recomiendo que elijas un idioma y te quedes con él.

¿Qué idioma tiene mejores recursos específicos de desarrollo de juegos disponibles (libros, sitios web, foros)?

Difícil de decir. Al navegar por los foros, diría que Javascript tiene un poco más de tutoriales y ejemplos de código. Sin embargo, el código en general es bastante fácil de transferir al otro idioma, y ​​dado que las bibliotecas se pueden usar en varios idiomas, lo más probable es que este no sea un problema importante.

Lokkij
fuente
8

La primera pregunta que tienen todos los desarrolladores principiantes de Unity es C # o JS. Siempre ve con C #.

Ahora, en este momento puede estar pensando: "Pero no quiero aprender C # y ya sé un poco de JavaScript".

Pero lo engañoso que debe tener en cuenta es que Unity JavaScript no es JavaScript. Es una capa superficial de sintaxis ECMA sobre .NET CLR. No hace ninguna de las cosas interesantes que a JavaScript le gustan los recintos anónimos y las referencias de funciones de la forma en que los usaría normalmente. Tiene sus propias matrices que no coinciden con las matrices .net normales, y encontrará muchas trampas y limitaciones que podría haber evitado utilizando C #. Unity JavaScript es solo una capa de sintaxis recubierta de caramelo diseñada para hacer que .NET parezca menos intimidante, nada más. Te hará más daño que bien.

Groenlandia
fuente
7

En primer lugar, recomendaría C # sobre JavaScript para programar en Unity por dos razones principales. La primera razón se reduce a la diferencia de escritura fuerte / débil que descartaste. Creo que la mecanografía fuerte funciona mejor que la mecanografía débil a nivel conceptual, pero, francamente, ese es un argumento muy grande que la gente tiene, por lo que me centraré más en un tema práctico específico: implementar en iOS (y posiblemente otras plataformas también, pero ese es el solo uno que sé con certeza) requiere tipeo estático. Unity incluso tiene una directiva "#pragma estricta" que puede forzar la escritura estática en JavaScript por este motivo, pero eso me lleva a mi segundo motivo ...

En segundo lugar, el JavaScript en Unity no es del todo igual que JavaScript en un navegador. Esto crea problemas cuando intenta aplicar conocimiento de Unity externo (es decir, la mayoría de los recursos sobre JavaScript) a la programación en Unity. Es por eso que muchos desarrolladores de Unity se refieren al lenguaje como UnityScript.


Ahora para abordar sus preguntas específicas:

¿Hay una diferencia de rendimiento notable?

En realidad no, no ( algunos detalles )

¿El código de JavaScript está empaquetado tal cual? Y si es así, ¿ayuda esto a la moda del juego?

Depende de la plataforma, y ​​no, esto realmente no ayuda a la moda

¿Es posible usar bibliotecas desarrolladas para un idioma mientras se desarrolla en el otro?

Creo que sí (aunque nunca he necesitado hacer esto, porque todas las bibliotecas que uso se programaron en C #)

¿Es posible mezclar los dos idiomas en el mismo proyecto de Unity codificando algunas partes en C # y otras en Javascript?

Sí (aunque trato de evitarlo, por razones de coherencia)

jhocking
fuente
dentedpixel.com/developer-diary/… podría agregar esto a su respuesta. Votado
Gray
interesante linke, agregado
jhocking