在阅读了有关Unity,UDK和ID的激烈问题之后,我很好奇:什么是Unity屡受打击,最严重的局限性?
为了使这个问题保持非主观性,我再一次谈论的是Unity的头号重复犯案者。作为Unity用户,您确实希望有人在开始使用它之前就告诉过您。
我从某人那里听说Unity不能很好地处理版本控制,因为它会生成很多二进制文件(不可更改)。对我来说,当我独自工作时,这并没有真正削弱。
有什么想法吗?
在阅读了有关Unity,UDK和ID的激烈问题之后,我很好奇:什么是Unity屡受打击,最严重的局限性?
为了使这个问题保持非主观性,我再一次谈论的是Unity的头号重复犯案者。作为Unity用户,您确实希望有人在开始使用它之前就告诉过您。
我从某人那里听说Unity不能很好地处理版本控制,因为它会生成很多二进制文件(不可更改)。对我来说,当我独自工作时,这并没有真正削弱。
有什么想法吗?
Answers:
让我作为序言,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中有一个导入的资产服务器。
我的第一大问题是重新版本控制。解决方案?只需将DropBox用于Unity项目。只要您正确设置(即为其“ PackRat”服务付费),它便会保留修订历史记录。通过这种方式,与不想了解传统版本控制的设计人员进行合作也更加容易,DropBox为他们提供了透明的解决方案。不利的一面是,例如分支/合并并没有得到真正的支持。git,SVN。
对于那些怀疑...
Dropbox充当存储服务时,其重点是同步和共享。它支持修订历史记录,因此可以从任何同步计算机中恢复从Dropbox文件夹中删除的文件。[33] [34] Dropbox的版本控制还可以帮助用户了解他们当前正在处理的文件的历史记录,从而使多个人可以编辑和重新发布文件,而不会丢失以前的格式。[35] 版本历史记录限制为30天。提供了一个无限制版本历史记录的付费选项,称为“ Pack-Rat”。
请参阅此处以获取来自Unity论坛的可靠参考。
除此之外,我发现关于Unity的唯一烦人之处是它没有C一样(main())或AS3一样(文档类)的应用程序入口点。但是,您只是将应用程序初始化放在一个空的GameObject上,没什么大不了的。围绕此固有结构的代码流也有所不同,但是同样,没有什么太难理解的了。
至于许可证,大多数人没有意识到(我特别指的是可能没有钱支付专业许可证和资产管理器附加组件的小型独立运营商和业余爱好者),您几乎可以做任何事情基本/免费版曾经想过。确实,这不是什么巨大的障碍,Unity团队一直非常慷慨。
我想到了另一个主要限制,每天都会使我烦恼,因此我将其单独发布。
Unity3D希望您在MonoDevelop中编辑脚本,特别是它们分发的旧版MonoDevelop。此版本的“查找文件”功能已损坏,原因是使用它通常会导致IDE挂起,从而使其无效。
这对任何引擎来说都是一个很大的刺激,但是对于Unity来说却是一个巨大的刺激,因为它鼓励了一个分散的系统,将各个组件作用在各种游戏对象上。但是,如果您甚至无法搜索各个组件,又如何找出哪些组件访问了哪些属性呢?
编辑:此答案发布于2011年:谢天谢地,修复了文件查找错误。就像评论者所说的那样,您可以在其他编辑器中编辑代码(尽管如果您希望能够在调试器中运行,则选择是有限的)。
对我而言,最严重的限制是在EULA中:
“赌博限制未经Unity单独许可,您不得分发或发布与任何赌博活动有关的任何被许可人内容。”
这意味着从v4.0开始,除非您或您的客户准备支付额外的许可费(视具体情况而定),否则您不能将Unity用于涉及现金/机会的游戏。也就是说,他们会看到您的身价和相应的税费,并引用了6个数字。
更令人不安的是,谁知道他们将添加到v5 EULA中。也许所有社交游戏?也许所有多人游戏?
任何使用Unity的开发人员都有在将来的版本中被勒索的风险。
好问题。对我来说,最大的问题是GUI。我不介意以程序员为中心,但是我确实介意GUI对象是函数而不是对象的糟糕方式,而且GUI处理全部填充到一个函数调用中,该函数调用用于呈现和事件处理,并且没有与输入系统集成(意味着对GUI元素的点击可以解释为世界上的点击),等等。
第二个问题是缺乏适当的版本控制支持(主要是因为系统使用目录布局作为项目布局,这在移动或重命名内容时会混淆VCS),但这可以解决,并且这不是问题。大家