Unity3D,您编写多少代码?[关闭]


16

我很想知道在Unity3D中创建游戏时的工作流程吗?

它会为您生成很多代码吗?

我的理解是,您在Unity中描述游戏并在后端执行脚本以执行逻辑。有点像您使用Unity来描述人偶,并使用脚本语言作为人偶母版。



2
您可能想在UnityAnswers上发布此问题。您将获得更好的响应,因为它更以团结为中心
Joe the Person 2010年

Answers:


18

Unity3D由一个游戏引擎以及一个(基本的)3D编辑器组成。它提供了网格,纹理,着色器,地形,相机,动画,粒子系统,音频样本以及其他在视频游戏中有用的对象。它包括PHYSX(Nvidia拥有的专有物理引擎)和Mono(公共语言运行时的开源实现,又名.NET)。

您使用多少取决于您自己。您可以将所有数据结构表示为Unity对象,在Unity的编辑器中构建世界,打开物理场,并使用最少的脚本让事件顺利进行。另外,您可以关闭物理引擎,通过算法构建世界,并对对象的所有行为和物理进行显式编程。

您可以选择完全用Mono语言编写行为(使用C#,JavaScript或Boo语言之一),也可以用另一种语言编写行为并将其链接到Unity项目。(与游戏对象的实际集成必须通过Mono进行,但是如果您愿意的话,这可以是很薄的一层。)

工作流程与任何游戏引擎基本相同。艺术家制作模型,纹理和动画,音频专家制作声音,程序员编写着色器和行为。

Unity程序员社区在以下两个方面都非常有帮助 answers.unity3d.comforum.unity3d.com。(也许在Stack Exchange上?)

找出答案的最佳方法是尝试一下:基本版本是免费的,“ Pro”版本有30天的试用期。


6

Unity3D更像是包装器/库,而不是“拖放”游戏引擎。它不生成代码,也不提供“现成”脚本。

例如,虚幻具有默认的第一人称视角相机,角色控制器,碰撞检测和AI。

您在Unity3D中什么都没有。从Unity3D获得的是一个游戏循环,基于组件的实体系统,一个全面的数学库,意味着可以加载媒体,处理网格,摄像头,即时模式GUI,着色器,渲染管线和其他低级功能。再加上一个不错的编辑器。您只需要担心高级功能。例如,您仍然必须编写自己的第一人称相机编码(如果您未使用默认相机)。但是,您无需处理查找向量等。

严格来说,Unity3D不会为您的游戏生成任何代码(更确切地说,它会生成用于运行游戏的代码,但不会为您的游戏玩法生成代码)

您将必须使用API​​来定义您的游戏。您可以看一下Unity3D附带的示例,然后重用这些代码。有几个预定义的脚本,但是通常您必须自定义脚本以满足您的需求。

您通过脚本创建游戏;您可以编写行为脚本,在Unity3D中设计关卡,并将这些行为分配给实体(或游戏对象)。它非常灵活,但是编写游戏仍然需要付出努力。我将其与Flash for 3D进行比较。


1
这句话是不正确的:“虚幻具有默认的第一人称视角相机,角色控制器,碰撞检测和
AI。Unity3D中

8
实际上,Unity包含所有内置功能的组件,还有更多可下载插件。您必须进行自定义和编码才能获得特定的功能,但是通过结合使用这些组件,您可以非常接近全功能。尽管它并不是像虚幻游戏那样充实,因为您并不是从功能枪入手的,但是我个人认为在Unity中使一般游戏(非FPS)更容易。不过,其中很多都是语义-您确实需要进行编程才能使一切顺利。
jcurrie33

1
也许最好说其他游戏引擎比Unity3D具有更紧密耦合的子系统。当您开始一个新的Unity3D项目并且不导入任何资产时,您将获得空白。我认为是一件好事。也许这使我对为什么我认为没有默认子系统的观点有些偏颇。只是它们不适合我要做的项目。这是Unity3D的优点之一。如果您愿意,可以省去默认值并自己编写代码。
Extrakun

3

Unity3D的表面看起来非常简单,几乎所有内容都是预先构建的,但没有一个是正确的。如果您忽略使用已经存在的脚本(每个引擎都存在的脚本,对Unity不利的一面)和您描述为功能强大的插件,那么它们绝对不是,Unity只是带有编辑器的编程接口。

您拥有自己的大部分代码。我在2个不同的项目中经历过。


2

用flash进行类比是完全正确的,但是我真的不理解您用木偶做的类比。

关于团结的好处是:

  • 跨平台:这是一个很大的优势,我想说的是更大的原因。
  • 高质量的引擎和实现,我的意思是使用Unity游戏对象等。
  • 从头开始制作简单的游戏非常容易,因此这是制作原型的优点。

坏事:

  • 无法与C ++或C链接,因此您的项目可能仅适用于Unity。使用C#可能会争辩说它将在XNA上运行,但是C ++会很好。我的意思是,这不是经验丰富的专业人员或自动翻译员会使用的工具,因为您对应用程序没有完全的控制权,但这并不意味着Unity不能做某些事情。另一方面,一个有好主意和才华横溢的团队可以在无需经验丰富的程序员的情况下完成出色的工作。
  • 这是很新的东西,因此显然没人知道该工具的开发方向。

我不喜欢Unity的地方在于,感觉到所有艰苦的工作都已经完成,因此程序员的价值大大降低了。另一方面,快速教人们如何快速构建事物非常有用。

总结一下:Unity(或类似Unity之类的工具)更适合那些无法接触优秀程序员但仍然知道做一些游戏脚本的艺术家。当然,您可以制作一个全功能的游戏,添加逼真的IA,执行mmo网络代码,否则不做,但是大公司不会使用Unity。

编程模型允许提出一种适合3/4开发工具的解决方案,以使其适合那些“独立”游戏开发商。它重视一个特定的工具,也重视艺术家,但不重视程序员(当然,除了团结团队的工具外)。

对于非程序员来说,Unity是一个很好的捷径,但是他们必须了解视频游戏是由代码行组成的,并且您不能仅凭出色的工具来完成所有工作。在某些时候,它需要了解一些有关底层编程的知识。

考虑到个人项目,我不会使用Unity,因为我不喜欢C#或Boo(Panda对python很好,所以为什么要打扰商业软件呢?),并且因为如果我展示我的项目并且它已经完成了,团结,那就不那么令人印象深刻了。


1
评论自己:也有允许使用C ++编程的专业插件,因此从理论上讲,它也是C ++引擎...
jokoon 2010年

1

Unity需要您编写脚本,但没有所有模板。在典型的OpenGL游戏中,您将需要像疯狂一样初始化矩阵和相机。在Unity中,您可以创建一个脚本来告知某事的行为,然后将其附加到一个对象上以使其行为。


1

如果通过为您生成大量代码,您将包括预建函数,可使用这些函数使您轻松进行碰撞检测和旋转计算(库),那么是的,它需要花费大量的代码并给出您可以立即优化版本并准备就绪。通常,您需要所有版本中的游戏开发专用的功能。

听起来似乎有些多余,但是根据我的经验,当Unity3D不忙于崩溃或构建时,让我改变自己想要的一切,将基于Quaternion的数学留给拥有数学硕士学位的人,可以使我的生活变得轻松而且仍然信任我,足以让我改变自己想要的一切。

它不会为您写任何东西,而是以您认为最好的方式帮助您,让您随心所欲地写东西。

一言以蔽之

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.