除了明显的语言差异之外,在Unity3D中开发游戏时,UnityScript和C#有何不同?
- 有明显的性能差异吗?
- UnityScript代码是否按原样打包?如果是,这是否有助于游戏的可修改性?
- 是否可以使用针对一种语言开发的库,而同时使用另一种语言开发?
- 两种语言可以在同一个Unity项目中混合使用吗?在C#中编码某些部分,在UnityScript中编码其他部分?
除了明显的语言差异之外,在Unity3D中开发游戏时,UnityScript和C#有何不同?
Answers:
有明显的性能差异吗?
否。从技术上讲,性能差异很小,但是在大多数情况下,不足以让您选择语言。
是否可以使用针对一种语言开发的库,而同时使用另一种语言开发?
是。只要确保保持库开发人员推荐的文件夹结构,就可以从任何语言访问该库。这与Unity编译顺序有关。但是,IDE中的某些功能(例如自动完成功能)可能不适用于所选库。(编辑:这可以通过使用免费插件UnityVS for Visual Studio来解决。)
通过在C#中编写某些部分并在Javascript中编写其他部分,是否可以在同一Unity项目中混合两种语言?
再说一次。但是,它很快变得很复杂,因为您必须确保以正确的顺序编译所有内容。虽然从技术上讲是可行的,但我建议您选择一种语言并坚持使用。
哪种语言可以提供更好的游戏开发者专用资源(书籍,网站,论坛)?
很难说。通过浏览论坛,我想说Javascript有更多的教程和代码示例。但是,代码通常很容易移植到另一种语言,并且由于库可以跨语言使用,所以这很可能不是主要问题。
所有入门的Unity开发人员首先遇到的问题是C#或JS。始终使用C#。
现在,您现在可能会想:“但是我不想学习C#,我已经知道一些JavaScript。”
但是,您需要考虑的误导性是Unity JavaScript不是JavaScript。它是基于.NET CLR的ECMA语法的表面贴面。它没有像JavaScript匿名外壳和功能一样引用JavaScript所做的任何酷事。它拥有自己的数组,这些数组与普通的.net数组不匹配,并且您会遇到许多陷阱和限制,而使用C#可以避免这些陷阱和限制。Unity JavaScript只是一层糖果涂层的语法,旨在使.NET看起来不那么吓人,仅此而已。弊大于利。
首先,出于两个主要原因,我建议在JavaScript中使用C#而不是JavaScript。第一个原因归结于您忽视的强/弱打字差异。我确实认为强类型胜于弱类型在概念上更好,但是坦率地说,这是人们的一个大争论,因此我将重点放在一个特定的实际问题上:部署到iOS(以及可能的其他平台),但这就是我只知道一个)需要静态类型。实际上,Unity甚至有一条指令“ #pragma strict”,由于这个原因可以强制在JavaScript中进行静态类型输入,但这仅使我想到第二个原因...
其次,Unity中的JavaScript与浏览器中的JavaScript不完全相同。当您尝试将Unity外部的知识(即有关JavaScript的大部分资源)应用于Unity编程时,这会产生问题。这就是为什么许多Unity开发人员将语言称为UnityScript。
现在来解决您的特定问题:
有明显的性能差异吗?
不是,不是(一些细节)
javascript代码是否按原样打包?如果是,这是否有助于游戏的可修改性?
取决于平台,没有,这并没有真正帮助可修改性
是否可以使用针对一种语言开发的库,而同时使用另一种语言开发?
我认为是这样(尽管我从来不需要这样做,因为我使用的所有库都是在C#中编程的)
通过在C#中编写某些部分并在Javascript中编写其他部分,是否可以在同一Unity项目中混合两种语言?
是的(尽管出于一致性原因,我尽量避免这样做)