2012-02-26 18 views
5

estoy empezando con dev juego usando Unity3d y puedo ver que hay 3 idiomas disponibles para la creación de secuencias de comandos: C#, unityscript y Boo ...¿Cuál es el mejor lenguaje de script para Unity3D

aunque, viniendo de un web- diseño pasado obviamente me utilizan con javascript, pero después de algunos intentos noté que Unity3d no tiene soporte completo para el lenguaje de script y algunos elementos como new Date().valueOf() y algunas otras declaraciones dentro de métodos como el atributo arguments y muchos otros no lo harán funciona correctamente, también parece que mi archivo no puede tener un método de envoltura que implique a todos los otros métodos como:

(function (scope) { 
    function Start() { 
     ... 
    } 
    ... 
}(this)); 

y al usar algo así como new Date().valueOf() que es válido en JS me sale:

MissingMethodException: Método no encontrado: 'System.DateTime.valueOf'. Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher()

Así que tal vez el compilador convierte el código inicial 'unityscript' en el lenguaje Boo? entonces, ¿quizás Boo es la opción "nativa" correcta y tal vez unityscript en sí mismo no es la mejor manera de hacerlo cuando desarrolla aplicaciones unity3d?

Estaba pensando en un lenguaje que tenga soporte completo para todas las clases y métodos nativos conocidos que funcionarán sin problemas?

Disculpe por los errores mencionados anteriormente y por favor déjeme saber lo que piensa.

Respuesta

6

Unity no utiliza Javascript "real" per se. Ver:

http://forum.unity3d.com/threads/1117-Javascript-Version

UnityScript se basa en JavaScript 2.0. Faltan algunas cosas (declaraciones de cambio, etc.), pero obtienen la mitad de la velocidad de C++, que es mucho más rápido que Mozilla.

Una vez que te acostumbras, desarrollar en 'JS' para la unidad es muy, muy rápido y flexible ... pero, por supuesto, si vas a desarrollar componentes nativos, o interactuar con cualquier cosa en C, tú ' Necesitaré usar C# (al final, C# no es difícil de aprender).

1

JS es el lenguaje más popular para usar con Unity. Pero el lenguaje se implementa en Mono, por lo que cualquier restricción en esa implementación también afectará a los scripts de Unity.

No sé cómo funciona la implementación de Mono de JS, pero a juzgar por el mensaje de error, utiliza los tipos de datos inicialmente definidos para Boo, al menos. Sin embargo, eso no significa que JS se "convirtió en Boo". Ambos se compilan en el mismo bytecode, que se ejecuta JIT y se ejecuta con el tiempo de ejecución Mono. Entonces ninguno de los dos idiomas es "más nativo" que el otro.

2

Debe usar C#. Es popular, maduro, nativo de .NET. C# es lo que usan los equipos grandes. Aprender C# será útil en el futuro. JS en Unity3D no es JS real como ya se mencionó y nadie escuchó hablar de Boo.

+0

eso definitivamente es algo que considerar, Valentin, gracias. Ya tuve la oportunidad de aprender un poco sobre C# cuando creé un sitio web usando .NET MVC Framework una vez. La idea de tratar con Javascript que "no es realmente Javascript" no me excita demasiado. Además, no podría estar más de acuerdo con Boo, nunca he oído hablar de él;) – zanona

+0

Me encanta boo, aunque estoy seguro de que solo lo implementaron porque tardó unos segundos, no porque las personas quisieran usarlo. –

0

Revise las ventajas y desventajas de utilizar C# y el script de Java desde here. C# es un poco más rápido que JavaScript y obtienes funciones adicionales proporcionadas por C#. Puede obtener la opinión de la gente de here.

Desarrollar con C# tiene la ventaja de Visual Studio 2010.Proporciona una mejor función de finalización de código que Mono.

En JavaScript solamente, las variables pueden tener un tipo no especificado. Esto solo ocurre si no asigna un valor mientras declara la variable.

El rendimiento es más lento con variables tipadas dinámicamente, y puede encontrarse con problemas de conversión. Si esto es una preocupación, use #pragma strict.

7

Si quieres ser un desarrollador en Unity y desarrollar una carrera en él, aprende C# y úsalo, no pierdas el tiempo con UnityScript. Puede usar C# fuera de Unity para programar. Si su carrera principal ya es desarrollo web (o lo será), continúe usando javascript porque, en última instancia, C# y UnityScript tienen la misma funcionalidad, pero C# se usa mucho más para programar juegos y aplicaciones.

La mayoría de los activos en la tienda que he usado son C# o ofrecen tanto JS como C#. La mezcla entre los idiomas crea serios problemas de dependencia porque para usar una clase en cualquiera de los lenguajes ya debe haber sido procesada por la orden de carga del script de Unity. Para usar una clase definida por Javascript en C#, ese archivo de script debe haberse procesado antes del archivo de script C#. Si la clase javscript luego necesita algo de la clase C#, tendrías que encontrar formas de evitarlo porque simplemente ya no es posible desde el archivo javascript. Unity tiene formas de definir el orden de script.

Pensé que le advertiría sobre la mezcla de C# con UnityScript porque si no se centra en uno u otro, se encontrará con este problema. En definitiva, C# es el término medio entre lenguajes ambiguos como VB y JavaScript, y lenguajes pedantes como C++ (tengo un fondo de C/C++ de aproximadamente 10 años).

Su título "¿Cuál es la mejor xxx" conduce a respuestas obstinadas, pero trato de dar el mejor consejo posible sin ser subjetivo. C# te permitirá continuar, incluso si Unity se fuera un año a partir de ahora. UnityScript/JavaScript solo le permitirá pasar a ser un desarrollador web. Un desarrollador de C# puede moverse fácilmente a UnityScript/JavaScript, pero lo inverso es mucho más difícil (no imposible, simplemente más difícil).

Cuestiones relacionadas