5

我从使用 Unity3d 的游戏开发开始,我可以看到有 3 种支持的语言用于创建脚本:C#、unityscript 和 Boo ...

虽然,来自过去的网页设计,我显然使用过 javascript,但经过几次尝试后,我注意到 Unity3d 并没有真正完全支持脚本语言和一些元素,比如new Date().valueOf()方法中的一些其他语句,比如属性arguments和许多其他方法无法正常工作,而且我的文件似乎没有包含所有其他方法的包装方法,例如:

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

当使用类似在 JS 中有效的东西时new Date().valueOf(),我得到:

MissingMethodException:找不到方法:'System.DateTime.valueOf'。Boo.Lang.Runtime.DynamicDispatching.MethodDispatcherFactory.ProduceExtensionDispatcher()

那么也许编译器会将最初的“unityscript”代码转换为 Boo 语言?所以也许 Boo 是正确的“本机”选择,也许在开发 unity3d 应用程序时,unityscript 本身并不是最好的方法?

我正在考虑一种完全支持所有已知的本地类和方法的语言,这些类和方法可以毫无问题地工作?

很抱歉上面提到的任何错误,请让我知道你的想法。

4

5 回答 5

9

Unity 本身并不使用“真正的”Javascript。看:

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

UnityScript 基于 javascript 2.0。缺少一些东西(switch 语句等),但它们的速度是 C++ 的一半,比 Mozilla 快得多。

一旦你习惯了它,在 'JS' 中进行统一开发是非常快速和灵活的......但是当然,如​​果你要开发本机组件,或者与 C 中的任何东西接口,你需要使用C#(归根结底,C# 并不难学)。

于 2012-02-26T12:01:51.197 回答
9

如果您想成为 Unity 的开发人员并以此为基础发展事业,请学习 C# 并使用它 - 不要在 UnityScript 上浪费您的时间。您可以在 Unity 之外使用 C# 进行编程。如果您的主要职业已经(或将来)是 Web 开发,那么请继续使用 javascript,因为最终 C# 和 UnityScript 具有相同的功能,但 C# 更广泛地用于编写游戏和应用程序。

我使用的商店中的大多数资产都是 C# 或同时提供 JS 和 C#。语言之间的混合会产生严重的依赖性问题,因为要在任何一种语言中使用一个类,它必须已经被 Unity 脚本加载顺序处理过。要在 C# 中使用 Javascript 定义的类,必须在 C# 脚本文件之前处理该脚本文件。如果 javscript 类稍后需要 C# 类中的某些内容,您将不得不找到解决方法,因为它不再可能从 javascript 文件中获得。Unity 有定义脚本顺序的方法。

我想我会警告您不要将 C# 与 UnityScript 混合使用,因为如果您不专注于其中之一,您将遇到这个问题。归根结底,C# 是 VB 和 JavaScript 等模棱两可的语言与 C++ 等迂腐语言之间的中间地带(我有大约 10 年的 C/C++ 背景)。

你的标题“什么是最好的 xxx”导致了自以为是的答案,但我试图在不主观的情况下给出最好的建议。C# 将允许您继续,即使 Unity 一年后离开。UnityScript/JavaScript 只会让您成为一名 Web 开发人员。AC# 开发人员可以轻松地进入 UnityScript/JavaScript,但反过来要困难得多(并非不可能,只是更困难)。

于 2015-01-11T03:15:28.900 回答
3

你应该使用 c#。它流行、成熟、原生于 .NET。c# 是大团队使用的。学习c#以后会有用的。Unity3D 中的 JS 不是真正的 JS,正如已经提到的,没有人听说过 Boo。

于 2012-02-26T17:30:37.980 回答
1

JS 是与 Unity 一起使用的最流行的语言。但是该语言是在 Mono 中实现的,因此该实现中的任何限制也会影响 Unity 脚本。

我不知道 JS 的 Mono 实现是如何工作的,但从错误消息来看,它至少使用了最初为 Boo 定义的数据类型。但是,这并不意味着 JS 就“变成了 Boo”。两者都被编译成相同的字节码,该字节码是 JIT 并由 Mono 运行时运行。因此,两种语言都不比另一种“更本土化”。

于 2012-02-26T12:00:58.513 回答
0

从此处查看使用 c# 和 Java 脚本的优缺点。C# 比 JavaScript 快一点,并且您可以获得 C# 提供的额外功能。你可以从这里得到人们的意见。

使用 c# 开发具有 Visual Studio 2010 的优势。它提供了比 Mono 开发更好的代码完成功能。

仅在 JavaScript 中,变量可以具有未指定的类型。仅当您在声明变量时未分配值时才会发生这种情况。

动态类型变量的性能较慢,并且您可能会遇到强制转换问题。如果这是一个问题,请使用#pragma strict。

于 2012-04-09T05:59:08.253 回答