【问题标题】:What is the best script language for Unity3DUnity3D最好的脚本语言是什么
【发布时间】:2012-03-16 04:58:48
【问题描述】:

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

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

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

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

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

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

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

对于上面提到的任何错误,我们深表歉意,请告诉我您的想法。

【问题讨论】:

    标签: c# compiler-construction unity3d unityscript boo


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 这绝对是值得考虑的事情,Valentin,谢谢。曾经在使用 .NET MVC Framework 创建网站时,我已经有机会学习了一点 C#。处理“不是真正的 Javascript”的 Javascript 的想法并没有让我太兴奋。另外,关于 Boo,我完全同意,从来没有听说过;)
        • 我喜欢 boo,尽管我确信他们实现它只是因为它需要几秒钟,而不是因为人们想要使用它。
        【解决方案4】:

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

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

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

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

        【讨论】:

          【解决方案5】:

          如果您想成为 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 开发人员。 C# 开发人员可以轻松进入 UnityScript/JavaScript,但反过来要困难得多(并非不可能,只是更困难)。

          【讨论】:

            猜你喜欢
            • 2011-05-17
            • 1970-01-01
            • 2010-09-09
            • 1970-01-01
            • 1970-01-01
            • 2011-02-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多