【问题标题】:Are there any limitations when using Unity 3D?使用 Unity 3D 时是否有任何限制?
【发布时间】:2017-04-16 21:30:05
【问题描述】:

我在 3D 编程/游戏开发领域还是个新手。我将 Unity 与 MonoDevelop 一起使用,主要使用 Blender 制作的模型、纹理等。编程逻辑是用 C# 完成的。

我的主要问题是:Unity 是否一切皆有可能?我知道这是一个宽泛的问题,但对于“一切”,我的意思是现在几乎所有 3D 游戏(或 2D 游戏)都有一些例子:

  • 简介/过场动画(例如到达地图上的特定点)
  • 主菜单/菜单中的配置/动画菜单组件
  • 可配置的声音/图形选项
  • 多个地图/场景,按需加载地图/场景/游戏对象
  • 音效、背景音乐
  • 等

再次抱歉,我知道这是一个宽泛的问题,但我无法摆脱在 Unity 中“无法做任何我想做的事情”的感觉(如果你明白我的意思的话)。

例如,我可以编写类似的游戏吗?完全使用 Blender / Unity 的使命召唤 MW2 或超级马里奥 64? (我知道那些可能使用他们自己的游戏引擎等,但我只是指构成整个游戏的所有组件,基本上)。

或者以其他方式表述,任何人都可以说“哦,这是一个好主意,但你无法使用 Unity 实现这一点”,或类似的话。如果是,为什么?

谢谢!

【问题讨论】:

  • madewith.unity.com希望它能告诉你用unity做了什么?实际上你可以团结起来

标签: unity3d 3d unity5


【解决方案1】:

我敢说没有游戏真的不可能用 Unity 编写。有些事情很难或不可行,但让我们从你的小清单开始。

  • 简介/过场动画:目前这是一个小手册。您可能需要编写一些 C# 代码来控制 GameObjects 和 Camera 上的一组动画。我会说很难,并非不可能。另一种方法是使用 Cinema Director(资产商店)或等到 Unity 发布 Timeline(以前称为 Director,专为这类东西设计的功能;D)

  • 主菜单:这很容易。从 v4.6 开始,Unity 有一个名为 Canvas 的功能。用它制作菜单非常简单(甚至是动画菜单)。

  • 声音和图形选项:不是我的部门,但我相信你想要的是Unity Quality settings。它们允许您创建一些预定义的图形设置,以便您的用户可以在它们之间进行选择。此外,在使用ShaderLab(unity 的着色器语言)编写着色器时,您可以根据播放器的显卡告诉 unity 它应该如何表现。

  • 多地图/场景,按需加载地图/场景/游戏对象:内容点播有AssetBundles。从来没有真正使用过它们,但总体思路是这样的:将一些资产分组到一个文件中,并告诉游戏下载它,加载资产并在游戏中使用它们(如 DLC)。如果您打算在其中存储代码,您可能会遇到一些困难,但同样,这并非不可能。

  • 音效、背景音乐:呃……你找到我了。您可能想查看 Unity 的 Audio Mixer,但这是我从未真正研究过的东西。 (理论上它也很容易,我看到我的同事一直在处理音频)

Unity 几乎可以完成您在小团队中可能想做的任何事情。如果你偶然发现了一些你不能轻易做到的事情,我建议你查看资产商店,因为很可能其他人已经遇到过这个问题。

现在,关于 Unity 不能做什么:

Unity 是一款旨在满足大多数人需求的游戏引擎。因此,如果您的游戏需要复杂和繁重的计算,它有时会面临效率问题。但是,如果您将它们统一在一起,您可能也会在其他地方拥有它们。这里的另一种选择是在统一之外的 dll 中编写繁重的东西。无论如何,Unity 中的大多数效率问题都可以通过良好的编程实践和一点 C# 知识来纠正。

修改支持。我认为这是 Unity 目前最大的差距。社区有很多尝试,但没有一个通用的解决方案总是有效的。如果您打算制作一款可修改的游戏,您可能需要大量阅读、修改代码并自己编写大量内容。但同样,这并非不可能。人家做到了,你也可以做到。

图形技术 Unity4 在 AAA 游戏通常具有的渲染技术方面存在很多差距,但 Unity5 赶上了非常好的水平,应该涵盖几乎所有其他现代引擎支持的内容。 (如果我说错了,请纠正我)unity5 中涵盖了其中一些限制。

Unity 中特别困扰我的大部分限制都与编辑器相关,并非真的无法解决。


如果我记得什么,我会在这里编辑它。


【讨论】:

  • 我虽然你误解了我的第 4 点“多地图/场景,按需加载地图/场景/游戏对象”。我没有考虑 DLC 和其他东西,而是加载新的 GameObjects 等,如果你需要这些东西,例如玩时切换地图(所以我假设您需要加载地图/角色和其他游戏对象)。因为我认为您不会在游戏开始时加载整个游戏对象/关卡/地图,还是会?
  • 嗯。我假设您知道统一允许您创建单独的场景。当您致电UnityEngine.SceneManagement.SceneManager.LoadScene(sceneNameOrIndex) 时,它将开始加载新关卡并丢弃旧关卡中的所有内容。由于加载所有内容可能需要一段时间,因此还有一个异步版本(不会立即破坏旧场景)。如果您希望将一些对象从一个场景保留到另一个场景(例如,一些玩家得分、任务信息等),您可以随时在 Awake() 中添加对 DontDestroyOnLoad(gameObject) 的调用。这次我做对了吗?
  • 也许你的意思是 prefab instantiation 按需加载游戏对象。
  • 谢谢您,您在第一条评论中所说的几乎就是我的意思:)
【解决方案2】:

Unity 是一个非常通用的引擎。 如果您指定的所有事情都可以使用统一的默认引擎或某些可用的插件,那么您可以做大部分事情。

电影学

您可以用 C# 编写代码来编辑您的过场动画,这完全取决于您要确保电影的质量水平。

主菜单

您可以使用默认安装的 unity 中提供的工具轻松创建菜单和其他 HUD,特别是“Canvas”游戏对象适用于 HUD,并且可以像游戏中的任何其他场景一样加载菜单

声音

统一的声音编辑相当不错,与其说是创建声音,不如说是用于配置它们在游戏中的再现方式

地图

地形编辑器非常强大,您还可以从资产商店导入资产包,YouTube 上也有很好的视频,介绍如何制作自己的地图来激发灵感,还有很多工具,如着色器、风和地形

如果您正在寻找更强大的图形和更高的保真度,也许 Unity 不是您想要的工具,Unreal 填补了更多空白,但您必须学习 C++,这是编辑器的主要语言。第一次,Unity 是一个非常可靠的选择

【讨论】:

    【解决方案3】:

    (我还不能向低代表发布 cmets)

    我可以说,在使用 Unity 的 4 年中,我从来没有想过不能创建我想要的东西(尽管我必须为这些东西做一些变通方法)。如今 Unity 是如此广泛,以至于您可以想象一个功能并且它确实存在。

    我目前正在做一个多人游戏的学校项目,而且效果很好。我知道的唯一限制是其他引擎更快并且(对于某些人)更易于使用。我认识一个人,他的游戏编译大约需要 30 秒。这不是很好。但是他的代码也很垃圾。

    您能想出一个示例游戏或您想要构建的东西吗?这将有助于回答这个问题。

    【讨论】:

    • 感谢您的回答!我在上面的问题中提到了我想到的两个示例游戏。这些只是关于菜单、过场动画、资产加载、游戏玩法、保存/加载游戏状态等的示例。
    • 至于模组,我知道 Unturned(僵尸射击游戏)也是用 Unity 制作的。他们有模组支持,所以你可以尝试看看他们是如何做到的。
    【解决方案4】:

    因此,虚幻引擎和许多其他引擎都嵌入了许多功能。不过,这些都是有限制的。使用虚幻引擎,您已经将很多您想要的东西打包到引擎中,但您必须越过障碍才能让它完全按照您想要的方式工作。

    另一方面,Unity 并没有那么多内置功能。例如,在 Unreal 中,您可以直接创建贝塞尔曲线,并让摄像机沿着这些曲线进行动画制作。 Unity 要求您编写自己的解决方案。

    之所以这么说是因为您正在编码或构建自己的解决方案,您的工作可能需要更长的时间,但您可能会对它有更多的控制权。

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 2012-07-24
      • 2018-12-08
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2021-06-25
      相关资源
      最近更新 更多