C#和UnityScript在Unity开发中有何不同?[关闭]


13

除了明显的语言差异之外,在Unity3D中开发游戏时,UnityScript和C#有何不同?

  • 有明显的性能差异吗?
  • UnityScript代码是否按原样打包?如果是,这是否有助于游戏的可修改性?
  • 是否可以使用针对一种语言开发的库,而同时使用另一种语言开发?
  • 两种语言可以在同一个Unity项目中混合使用吗?在C#中编码某些部分,在UnityScript中编码其他部分?

有非书面组成部分。但是C#允许诸如DLL导入之类的额外内容。除此之外,这是一个“选择”。并且完全主观。别忘了,还有Boo,您可以在其中编写代码。
2014年

2
带有客观答案的有用问题-它被关闭似乎不公平。
UpTheCreek 2014年

1
这个问题被关闭的主要原因有两个,它们与问题的实用性或答案的客观性无关。首先,该帖子提出了多个不相关的问题。其次,提出的一些问题过于注重讨论和/或两个问题太宽泛,以至于不适合写作。问题的“帮助”或受欢迎程度或答案的好坏都与问题是否适合该站点无关。

Answers:


12

有明显的性能差异吗?

否。从技术上讲,性能差异很小,但是在大多数情况下,不足以让您选择语言。

是否可以使用针对一种语言开发的库,而同时使用另一种语言开发?

是。只要确保保持库开发人员推荐的文件夹结构,就可以从任何语言访问该库。这与Unity编译顺序有关。但是,IDE中的某些功能(例如自动完成功能)可能不适用于所选库。(编辑:这可以通过使用免费插件UnityVS for Visual Studio来解决。)

通过在C#中编写某些部分并在Javascript中编写其他部分,是否可以在同一Unity项目中混合两种语言?

再说一次。但是,它很快变得很复杂,因为您必须确保以正确的顺序编译所有内容。虽然从技术上讲是可行的,但我建议您选择一种语言并坚持使用。

哪种语言可以提供更好的游戏开发者专用资源(书籍,网站,论坛)?

很难说。通过浏览论坛,我想说Javascript有更多的教程和代码示例。但是,代码通常很容易移植到另一种语言,并且由于库可以跨语言使用,所以这很可能不是主要问题。


8

所有入门的Unity开发人员首先遇到的问题是C#或JS。始终使用C#。

现在,您现在可能会想:“但是我不想学习C#,我已经知道一些JavaScript。”

但是,您需要考虑的误导性是Unity JavaScript不是JavaScript。它是基于.NET CLR的ECMA语法的表面贴面。它没有像JavaScript匿名外壳和功能一样引用JavaScript所做的任何酷事。它拥有自己的数组,这些数组与普通的.net数组不匹配,并且您会遇到许多陷阱和限制,而使用C#可以避免这些陷阱和限制。Unity JavaScript只是一层糖果涂层的语法,旨在使.NET看起来不那么吓人,仅此而已。弊大于利。


7

首先,出于两个主要原因,我建议在JavaScript中使用C#而不是JavaScript。第一个原因归结于您忽视的强/弱打字差异。我确实认为强类型胜于弱类型在概念上更好,但是坦率地说,这是人们的一个大争论,因此我将重点放在一个特定的实际问题上:部署到iOS(以及可能的其他平台),但这就是我只知道一个)需要静态类型。实际上,Unity甚至有一条指令“ #pragma strict”,由于这个原因可以强制在JavaScript中进行静态类型输入,但这仅使我想到第二个原因...

其次,Unity中的JavaScript与浏览器中的JavaScript不完全相同。当您尝试将Unity外部的知识(即有关JavaScript的大部分资源)应用于Unity编程时,这会产生问题。这就是为什么许多Unity开发人员将语言称为UnityScript。


现在来解决您的特定问题:

有明显的性能差异吗?

不是,不是(一些细节

javascript代码是否按原样打包?如果是,这是否有助于游戏的可修改性?

取决于平台,没有,这并没有真正帮助可修改性

是否可以使用针对一种语言开发的库,而同时使用另一种语言开发?

我认为是这样(尽管我从来不需要这样做,因为我使用的所有库都是在C#中编程的)

通过在C#中编写某些部分并在Javascript中编写其他部分,是否可以在同一Unity项目中混合两种语言?

是的(尽管出于一致性原因,我尽量避免这样做)


dentedpixel.com/developer-diary/… 可能希望将此添加到您的答案中。已投票。
2014年

有趣的链接,添加
飞速
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.