Pregunta

Estoy comenzando con el desarrollo de juegos usando Unity3d y puedo ver que hay 3 idiomas compatibles para crear scripts:C#, UnityScript y Boo...

aunque, viniendo de un pasado en diseño web, obviamente estoy acostumbrado a javascript, pero después de algunos intentos pude notar que Unity3d realmente 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 funcionarán correctamente, también parece que mi archivo no puede tener un método contenedor que involucre todos los demás métodos como:

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

y cuando se usa algo como new Date().valueOf() que es válido en JS me sale:

Excepción de método faltante:Método no encontrado:'System.DateTime.valueOf'.Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher ()

Entonces, ¿quizás el compilador convierte ese código inicial 'unityscript' en lenguaje Boo?Entonces, ¿tal vez Boo sea la opción "nativa" correcta y tal vez unityscript en sí no sea el mejor camino a seguir al desarrollar aplicaciones unity3d?

Estaba pensando en un lenguaje que tenga soporte total para todas las clases y métodos nativos conocidos y que funcione sin problemas.

Perdón por los errores mencionados anteriormente y déjeme saber lo que piensa.

¿Fue útil?

Solución

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

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

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

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

Otros consejos

Si desea ser desarrollador en Unity y desarrollar una carrera en ello, aprenda C# y úselo; no pierda el tiempo con UnityScript.Puedes usar C# fuera de Unity para programar.Si su carrera principal ya es el 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 recursos de la tienda que he utilizado son C# u ofrecen tanto JS como C#.La mezcla entre idiomas crea serios problemas de dependencia porque para usar una clase en cualquiera de los idiomas, ya debe haber sido procesada por el orden de carga del script de Unity.Para utilizar una clase definida por Javascript en C#, ese archivo de secuencia de comandos debe haberse procesado antes que el archivo de secuencia de comandos de C#.Si la clase javascript luego necesita algo de la clase C#, tendría que encontrar formas de evitarlo porque simplemente ya no es posible desde el archivo javascript.Unity tiene formas de definir el orden del script.

Pensé en advertirte sobre la mezcla de C# con UnityScript porque si no te concentras en uno u otro, te encontrarás con este problema.En última instancia, C# es el término medio entre lenguajes ambiguos como VB y JavaScript, y lenguajes pedantes como C++ (tengo experiencia en C/C++ de aproximadamente 10 años).

Su título "¿Cuál es el mejor xxx?" conduce a respuestas obstinadas, pero intento dar el mejor consejo posible sin ser subjetivo.C# le permitirá continuar, incluso si Unity desapareciera dentro de un año.UnityScript/JavaScript solo le permitiría convertirse en desarrollador web.Un desarrollador de C# puede pasar fácilmente a UnityScript/JavaScript, pero lo contrario es mucho más difícil (no imposible, sólo más difícil).

Deberías usar c#.Es popular, maduro y 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 ha oído hablar de Boo.

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

No sé cómo funciona la implementación Mono de JS, pero a juzgar por el mensaje de error, al menos utiliza tipos de datos inicialmente definidos para Boo.Sin embargo, eso no significa que JS se "convierta en Boo".Ambos se compilan en el mismo código de bytes, que es JIT y se ejecuta mediante el tiempo de ejecución Mono.Por tanto, ninguna lengua es "más nativa" que la otra.

Consulte las ventajas y desventajas de usar C# y Java script en aquí.C# es un poco más rápido que JavaScript y C# proporciona funciones adicionales.Puedes obtener la opinión de la gente de aquí.

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

Solo en JavaScript, las variables pueden tener un tipo no especificado.Esto solo ocurre si no asigna un valor al declarar la variable.

El rendimiento es más lento con variables escritas dinámicamente y puede tener problemas de conversión.Si esto le preocupa, utilice #pragma estricto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top