Unity:我需要学习一个还是两个(C#,UnityScript)?

3

我原本认为使用Unity进行开发需要同时掌握C#和UnityScript,但现在看来好像只需要掌握其中一种语言。

  1. 这两种语言是否具有相似的功能,因此我应该只使用一种语言编码,还是应该学习这两种语言,因为我需要同时使用它们?
  2. Unity是否仅仅使用C#和/或UnityScript,因为我一直以为游戏至少需要使用两种语言,即使在维基百科上也是这样写的,好像这是一个定义或者什么的(我知道有些游戏可以完全使用pygame等工具制作,但我的意思是像AAA大作之类的游戏)。
  3. 从第二个问题继续或者说在使用Unity时,你会使用除了C#和/或UnityScript之外的其他语言,而且Unity只用于游戏的某些部分吗?

最好获取Unity并开始使用它,然后您将看到需要学习什么,只需按照教程进行即可。 AAA游戏没有固定的规则,有些是用C ++编写的,其他是用Visual C ++ .net编写的,还有一些是用C#编写的,其他是用Java编写的,其他混合多种语言... - Gusman
传统的观念认为,AAA级游戏必须使用C/C++编写,比如使用Unreal引擎,但这种观念正在逐渐消亡。特别是当我们考虑到像《城市:天际线》和《Kerbal太空计划》这样的游戏都是使用Unity引擎开发的时候。 - user585968
顺便说一下,尼尔,这个问题很可能会在这里被关闭。你可以去gamedev.com这个网站寻找类似问题的答案。 - Fattie
@JoeBlow 谢谢,我会去查看这个网站的。 - Neel Kamath
如下所述,@NeelKamath不要犹豫,多问问题。我刚刚在下面添加了一些长评论,试图进一步澄清问题。在我看来,主要的混淆在于:游戏中的“东西”(模型、绘画、动画等)与Unity和程序员完全没有关系。如果你去一个大型游戏公司,有300个艺术家制作人类、枪支、马里奥、Lara Croft、道路、怪物等模型。可能只有25个工程师。工程师使用Unity(和C#)。艺术家与Unity完全没有关系。 - Fattie
显示剩余3条评论
4个回答

7

"UnityScript"已被弃用。

你必须使用C#。就是这么简单。


从我非常有限的Unity开发经验来看:

要么使用C#,要么使用UnityScript。

我编写了一些快速测试技能的游戏,只使用了C#,因为我之前对C和C++有所了解。在阅读文档以决定是否尝试将代码移植到UnityScript代码(再次作为技能测试)时,我明白了无论哪种方式都可以得到想要的结果。

在这些游戏中,我编写了各种组件,包括UI、游戏对象、地形碰撞,甚至还涉及跳跃和重力引擎的调整。从未有过一次我不得不停下来说“好吧,看起来我需要使用Unity Script来完成这个。”

据我所知,Unity中的游戏可以同时使用C#和UnityScript。但我从未被迫使用其中之一。

如果你遇到了Unity强制使用两者之一的情况,请回到这篇文章来责怪我。


从游戏中移植的事情往往是许可限制。为了开发游戏(再次强调,我的知识非常有限),您需要申请该控制台的许可证。有很多原因为什么你只会将某些东西授权给一个系统,可能是与母公司达成的某种协议。我不确定您在问其他问题的意思。 - Jhecht
4
这个回答有点误导。只需使用C#即可,Unityscript很快就会被淘汰。一旦C#6.0在Unity中可用,它可能将不再提供。大多数公司雇用具有C#技能而非Unityscript的人员。新的Unity示例仅以C#提供。您无需为任何原因了解Unityscript。对于C ++,您可以在Unity中使用它制作插件。但您仍然需要从C#调用该插件。因此,需要使用C#。 - Programmer
1
@NeelKamath 你只需要了解C#就可以使用Unity。是的,C#可以用来制作AAA游戏。唯一需要使用C++或制作插件的时候是当你需要的功能在Unity中不可用时。例如,假设你想要闪烁键盘大写锁定LED灯,这时就需要使用Unity API。你可以用C++编写它,将其转换为DLL,并从Unity C#中调用DLL函数。另一个例子是当你正在进行复杂或高级的操作,比如实时修改纹理或生成实时网格,这在Unity中非常缓慢。 - Programmer
1
@NeelKamath 您可以使用 C# 中的指针来加快速度,但仍然比使用 C++ 慢。C++ 似乎能够非常快地处理多个 for 循环。此外,生成过程纹理应该在 C++ 中完成,我说的一切都是出于性能原因。它仍然可以在 C# 中完成。到最后,您仍然需要从 C# 中调用它。AAA 游戏必须用 c/c++ 编写 这不是正确的。只需学习如何在 C# 中管理内存以及如何避免垃圾回收,因为 C# 和 Java 中的垃圾回收是大多数人提到这一点的原因。AAA 可以使用 C# 完成。 - Programmer
1
...... 再次强调,这与Unity 完全没有任何关系。我想您可能有些困惑:在游戏公司中,您有很多艺术家,他们制作模型、绘画、音乐等等。当然,他们使用Blender、Photoshop之类的工具——你知道吗?这与Unity没有任何关系。在一个完全独立的部门,实际的程序员坐在那里,使用Unity,他们将这些东西(模型、动画、绘画、音乐等)放入Unity中,然后编程游戏。 - Fattie
显示剩余12条评论

1
你可以使用自己最熟悉的语言。偶尔会有一些资产使用你不喜欢的语言。如果你想使用和调整该资产的功能,则需要使用其语言进行操作。这两个脚本可以同时在同一个项目中工作。这样做可能会变得很混乱,正如这个问题所示:Unity3d: Accessing JS variable from c# and vice versa。我相信一些基本的免费资产是用UnityScript编写的,例如角色控制器。如果你计划大量使用其中之一并且需要定期与这些脚本通信,则可能会影响你的语言选择。希望这能帮到你。

0

一篇帖子中有太多问题,我们会相应地提供答案。

  1. 这两种语言做的事情是类似的吗?

回答:从理论、数学和严格意义上讲,在编程中,它们都是等效的。但在实践中,它们差异很大。ref

我应该只用其中一种编程,还是应该同时学习两种,因为我需要同时使用两种语言?

回答:我认为这取决于你过去的经验。如果你以前接触过 C++ 或 Java,那么你可能更喜欢 C#;然而,如果你有 JavaScript/Basic 或 PHP 等动态类型语言的经验,那么你可能更喜欢 JavaScript。

如果你以前没有编程经验,JavaScript 可能会更容易入门,因为你不必担心类型和转换。ref

Unity只使用C#和/或UnityScript吗?因为我一直认为游戏必须至少使用两种语言。
回答:绝对不是强制性的,很大程度上取决于您的专业知识、需求、团队实力和管理。
Unity只适用于游戏的某些部分吗?
回答:绝对是的,Unity允许您构建、进行照明并提供一些粒子效果(如果需要)。它不允许您进行复杂的建模,而是提供编程接口,甚至Mono-Developer是一个单独的应用程序。
有用的链接:
  1. https://gamedev.stackexchange.com/questions/8118/what-are-the-pro-cons-of-unity3d-as-a-choice-to-make-games
  2. https://www.quora.com/What-are-the-main-pros-and-cons-of-Unity-3D-and-Unreal-Engine

在我们公司,实际上我们将我们的模型/动画导入到Unity中,进行一些编码工作,应用一些着色器和灯光效果,调整一些构建设置,然后进行构建。 - Muhammad Faizan Khan
Unity的一个重要优势是它支持多个平台。这真的很迷人和可爱。https://unity3d.com/unity/multiplatform - Muhammad Faizan Khan
是的,我真的很喜欢Unity的多平台功能。那么你的意思是说我甚至不能用Unity制作一个简单的游戏吗?我不知道它只是用来整合文件的工具。 - Neel Kamath
在Unity中制作简单的游戏是完全可能的。 - Muhammad Faizan Khan
实际上,你可以只使用Unity的UI或简单的基本形状(如球体、立方体等)及其组合来制作游戏,这是完全可能的。但你需要贴图等其他平台才允许的东西。 - Muhammad Faizan Khan
显示剩余5条评论

0
说实话,如果你想在编写游戏脚本时更自由,你应该学习C#,因为它是基于这个的,但如果你是新手,我建议使用Bolt,它是可视化脚本,你可以理解代码背后的整个思路。我曾经也使用过它,它帮助我得到了一些关于编写脚本的想法,但现在我正在尝试使用C#来编写,因为它至关重要,而且C#比大多数其他语言要容易得多。
毕竟,你应该选择一个你感觉更舒适的语言。
还有,不要忘记使用一些Unity准备好的项目,这会比你想象的更有帮助,同时检查它们的代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接