Unity的最严重限制是什么?[关闭]


30

在阅读了有关Unity,UDK和ID的激烈问题之后,我很好奇:什么是Unity屡受打击,最严重的局限性?

为了使这个问题保持非主观性,我再一次谈论的是Unity的头号重复犯案者。作为Unity用户,您确实希望有人在开始使用它之前就告诉过您。

我从某人那里听说Unity不能很好地处理版本控制,因为它会生成很多二进制文件(不可更改)。对我来说,当我独自工作时,这并没有真正削弱。

有什么想法吗?


1
DV,但无可奉告,还有2.5岁的问题吗?这是为什么?
ashes999 2014年

可能只是随意地绊倒它。这个问题显然是从一开始就基于观点的。说“为了使这个问题保持非主观性”并不意味着它不是主观的,因为您发现最讨厌的头号重复犯人将与下一个用户的头号犯规者不同。这样的名单几乎没有任何价值,不仅有利于执行的神话,例如,如果每个人都称“X是的事情”,但X被固定在一个统一更新一个星期后还排名靠前的答案可能保持未编辑与“X是甚至在几年后仍将其列为最重要的问题”。
LearnCocos2D 2015年

另外,哪个答案是正确的答案?如果你想想看,没有一个答案应该被接受,因为有回答这个问题没有正确的方式回答。这可能是主观问题的第一指标。
LearnCocos2D 2015年

Answers:


33

让我作为序言,Unity伙计们非常擅长于听到社区所面临的主要疑虑,并最终承诺改善自己的状况。还有很多问题仅在某些平台上出现,或者是个人喜好或您正在开发的游戏的特定问题。

话虽如此:

1)不良的源代码控制集成和庞大的团队工具。正如您提到的,很多不可扩散的二进制文件。编辑器将忽略场景文件的只读标志。您必须检入的实际文件不是立即显而易见的。其中的某些功能已在3.5中通过SVN和P4集成进行了纠正。也有基于文本的场景格式的承诺。更新:现在可以在Pro的Pro版本中使用基于文本的场景格式。看这里

2)缓慢的,以程序员为中心的UI工具。每个小部件都是其自己的绘制调用,在移动平台上会产生很多开销。没有诸如带有动画的面板之类的东西的概念,以及所有其他奇特的东西,它们可以使UI在无需自己滚动的情况下感觉良好。路线图上有望出现新的UI系统(3.6?)。有一些第三方工具,但不是很好。

3)真正的基本粒子编辑。他们希望在3.5中使用新的基于曲线的系统。更新:此基于曲线的系统称为Shuriken,现已可用。看这里

4)您不能嵌套预制件。这是一个小问题,但是当您习惯使用预制系统及其所提供的所有功能时,可能会感到沮丧。已经承诺过,但没有具体日期。更新:您现在可以嵌套预制件。

5)在无线限制下几乎不可能获得iOS游戏。在最佳情况下,仅二进制文件就相当于8兆。这不是容易修复的东西。

6)空引用异常会使不允许JIT编译代码的平台崩溃。在独立版本或Web版本上,将捕获NRE。它仍然是一个未捕获的异常,但是至少该应用程序将尝试继续运行。在iOS上,它会使设备崩溃。您可以将其置于调试模式并捕获某些类型的异常,但是性能会受到影响。

7)在开发多平台游戏时,每当切换构建目标时,都必须重新导入所有内容,这需要很长时间。我实际上是通过在磁盘上保留项目的多个副本来解决此问题的。显然在3.5中有一个导入的资产服务器。


1
@iamcreasy,适合自己,老兄。“虽然Dropbox用作存储服务,但它的重点是同步和共享。它支持修订历史记录,因此可以从任何已同步的计算机中恢复从Dropbox文件夹中删除的文件。[33] [34] Dropbox的版本控制也有帮助用户知道他们当前正在处理的文件的历史记录,从而使多个人可以编辑和重新发布文件,而不会丢失以前的格式。[35]版本历史记录限于30天。提供了不受限制的版本历史记录,称为“ Pack-Rat”。-Wikipedia
工程师,

6
也许我不公平,但是我在想NullReferenceExceptions是程序员的错;您应该检查传入的参数。当然,如果像在
Visual Studio中

1
@ ashes999始终需要使用新技术来学习一些术语。言语是我们对概念的处理。即使对于基本Flash也是如此。不过,围绕Unity可用性的炒作并非一无是处。它降低了非专业开发人员的进入门槛,并使专业人士能够做的事事半功倍,事半功倍。不要为预期的限制担心太多。大多数可能甚至对您来说都是障碍。我唯一关心的是空指针异常,并且这些异常是可调试的。
工程师

3
现在,Tedrad的答案如何在Unity 4.1.x中成立?有人知道吗?
2013年

1
当您说“现在可以嵌套预制件”时,您指的是什么?也许自上次编辑问题以来,此功能已被删除?还是您指的是这个插件
NauticalMile 2014年

6

当我和一个朋友为一个更大的项目评估Unity时,我们发现最大的问题之一是其软件外观的性能。如果我没记错的话,我们有10个动画对象,每个动画对象约有1000个顶点,而在使用中端计算机时我得到了20fps ...不是很好...


这是多久以前的?似乎几乎每个版本的发行说明中都有一些有关改进蒙皮性能的信息。面对iOS,他们从GPU蒙皮切换为使用FPU,因为它快得多。
四分

一个月前……
Cpt。

6

我的第一大问题重新版本控制。解决方案?只需将DropBox用于Unity项目。只要您正确设置(即为其“ PackRat”服务付费),它便会保留修订历史记录。通过这种方式,与不想了解传统版本控制的设计人员进行合作也更加容易,DropBox为他们提供了透明的解决方案。不利的一面是,例如分支/合并并没有得到真正的支持。git,SVN。

对于那些怀疑...

Dropbox充当存储服务时,其重点是同步和共享。它支持修订历史记录,因此可以从任何同步计算机中恢复从Dropbox文件夹中删除的文件。[33] [34] Dropbox的版本控制还可以帮助用户了解他们当前正在处理的文件的历史记录,从而使多个人可以编辑和重新发布文件,而不会丢失以前的格式。[35] 版本历史记录限制为30天。提供了一个无限制版本历史记录的付费选项,称为“ Pack-Rat”。

请参阅此处以获取来自Unity论坛的可靠参考。

除此之外,我发现关于Unity的唯一烦人之处是它没有C一样(main())或AS3一样(文档类)的应用程序入口点。但是,您只是将应用程序初始化放在一个空的GameObject上,没什么大不了的。围绕此固有结构的代码流也有所不同,但是同样,没有什么太难理解的了。

至于许可证,大多数人没有意识到(我特别指的是可能没有钱支付专业许可证和资产管理器附加组件的小型独立运营商和业余爱好者),您几乎可以做任何事情基本/免费版曾经想过。确实,这不是什么巨大的障碍,Unity团队一直非常慷慨。


1
Dropbox,耶。但是+1-本质上就是我所追求的。
ashes999 2011年

呵呵,我想任何开发人员都会有同感。但是,嘿,如果它能胜任工作……
工程师

2
我们在Unity中使用Git。设置.gitignore文件需要花费一些工作,但是它可以工作,并且提供了完整的VCS功能集。
Kylotan

2
我们将Mercurial(带有BitBucket)与Unity一起使用,并且在正确配置.hgignore文件后可以很好地工作。
JD

@JD(&Kylotan)-如何解决场景文件不可合并的问题?
UpTheCreek

6

我想到了另一个主要限制,每天都会使我烦恼,因此我将其单独发布。

Unity3D希望您在MonoDevelop中编辑脚本,特别是它们分发的旧版MonoDevelop。此版本的“查找文件”功能已损坏,原因是使用它通常会导致IDE挂起,从而使其无效。

这对任何引擎来说都是一个很大的刺激,但是对于Unity来说却是一个巨大的刺激,因为它鼓励了一个分散的系统,将各个组件作用在各种游戏对象上。但是,如果您甚至无法搜索各个组件,又如何找出哪些组件访问了哪些属性呢?

编辑:此答案发布于2011年:谢天谢地,修复了文件查找错误。就像评论者所说的那样,您可以在其他编辑器中编辑代码(尽管如果您希望能够在调试器中运行,则选择是有限的)。


1
对于它的价值,您可以将任何您想要的IDE与Unity一起使用(我使用Visual Studio Pro)。但是,如果要使用调试器,则只能使用MonoDevelop。
四分

1
是的,调试器非常重要(即使MonoDevelop的功能不是那么好)。另外,不幸的是,它说它不适用于Visual Studio Express。我不知道其他人使用的其他C#IDE。但实际上,Unity附带的组件应该处于更好的状态。
Kylotan

您还可以使用其他文本编辑器,例如Sublime Texthttp://wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
Terrance

我还没有尝试过,但是我已经读过,现在有一种方法可以使用Visual Studio进行调试(我认为是通过插件)。我不确定这可能仅适用于Pro版本。
基督教徒

FWIW,UnityVS使Visual Studio集成更加流畅。您可以调试,跨过去,等
基本

5

对我而言,最严重的限制是在EULA中:

“赌博限制未经Unity单独许可,您不得分发或发布与任何赌博活动有关的任何被许可人内容。”

这意味着从v4.0开始,除非您或您的客户准备支付额外的许可费(视具体情况而定),否则您不能将Unity用于涉及现金/机会的游戏。也就是说,他们会看到您的身价和相应的税费,并引用了6个数字。

更令人不安的是,谁知道他们将添加到v5 EULA中。也许所有社交游戏?也许所有多人游戏?

任何使用Unity的开发人员都有在将来的版本中被勒索的风险。


4
任何第三方工具或软件都可以在新版本中添加(或删除)EULA子句。我真的看不到Unity特有的功能。此外,在没有支持证据的情况下,似乎很奇怪地宣称,“禁止赌博”条款严重到足以成为该软件总体上最令人讨厌的限制,而这正是原始(现在已经成为题外话)问题试图解决的问题。除非大多数Unity游戏都是以赌博为核心功能,否则此答案更像是一头胡言乱语。
乔什

4

好问题。对我来说,最大的问题是GUI。我不介意以程序员为中心,但是我确实介意GUI对象是函数而不是对象的糟糕方式,而且GUI处理全部填充到一个函数调用中,该函数调用用于呈现和事件处理,并且没有与输入系统集成(意味着对GUI元素的点击可以解释为世界上的点击),等等。

第二个问题是缺乏适当的版本控制支持(主要是因为系统使用目录布局作为项目布局,这在移动或重命名内容时会混淆VCS),但这可以解决,并且这不是问题。大家


您可以查询GUI系统以查看其是否消耗了点击,然后在您的世界objec选择代码中忽略该点击。繁琐,但有效。
肖恩·米德迪奇

你会怎么做?
Kylotan

输入系统对象上有一个属性来获取“热”元素的ID,如果光标下没有GUI元素,则该ID为零。忘记确切的属性名称,但是应该在unity脚本参考中。
肖恩·米德迪奇
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.