安装unity并且创建你的第一个场景

在第一章,你将会学习到一些非常基本的内容:首先是unity的下载和安装,其次是准备创建我们游戏内的第一个场景。

配置你的环境

我们从简单的部分开始:下载和配置Unity。

安装Unity

从官方网站下载最新的版本。启动可执行的文件,之后一切都会正确的安装。

选择一个代码编译器

Unity是依附于MonoDevelop(4.0.1目前)来编写代码。

Windows

如果你在Windows环境下,那么你可以(也应该)选择另一个选项:

  • Windows版本的Visual Studio 2013 Desktop (C#)

同样:下载并且安装,虽然下载和安装将会花费一些时间,但是整个过程将会非常简单因为其捆绑了所有你所需要的。之后,在Unity的设置中,将Visual Studio设置为你的默认编辑器。

不可不知:Unity是不可能使用Visual Studio 2013 Express 的调试工具。你需要专业版的Visual Studio并且要买UnityVS插件。在Express版本中,你将会有一个更好的代码编辑器,但缺乏一个调试工具将会很严重。

Mac OS X

MonoDevelop 4和Xamarin Studio非常相似。也就是说它比之前Unity版本的旧的MonoDecelop 2要好很多。虽然还不是非常完美,但是如果你是在Mac环境下,那么它仍然会是你的最佳选择。

哪种语音

Unity允许你使用三种语言进行编码:JavaScript(UnityScript),C#和Boo。

我们强烈的推荐你使用C#。它更强大并且更少出错。此外,本教程是用C#编写的。

如果我完全是一个Unity新手?

如果你对于Unity是一个完全的新手,在本教程中,我们讲尽我们最大的努力来进行讲解。

学习去使用Unity的主接口相对来说比较容易。你可能在你第一次打开这个软件的时候被吓到,但随着时间你会慢慢适应它。

这里有一些其他的我们找到的非常有趣并且可以辅助我们课程的东西:

  • Official Unity editor tutorials:官方的视频都是非常好的。你应该花费一个下午的时间来观看所有的——我们保证你不会浪费时间的。

  • Unity Patterns:一个有很多好的文章和工具的新网站。如果你对概念不是很清楚的话,协同程序的教程将是必读的。

第一个场景

创建一个新的项目

进入文件选项,然后创建一个新的项目。暂且不需要检测任何的标准包,你可以在之后需要的时候再导入,否则可能会使得你很困惑。

选择2D设置。像之前一样,你之后可以在项目设置里改变这个设置。

不要担心项目名称。这个项目名称是在选项中定义的,并且想要改变整个项目的名称只需要重命名这个文件夹。

准备项目

正如Damien在另外一个教程中所说的,如果你打算使用Git或者SVN,首先你需要做的就是为团队协作开启一些模糊设置。

不要做别人已经做过的事情,如果你感兴趣的话只需要检查这个教程。:)

Unity布局和面板

你现在看到的是一个漂亮的空的场景。这是我们正在使用的布局,但是你应该花费一些时间将其个性化设置为你想要的界面。我(Damien)个人喜欢让控制台安置在游戏视图的旁边,但是如果你是小屏幕的话,你可能会使用标签而不是面板。

在你创建游戏之前,花几分钟时间来组织一下你的项目和场景。

我们建议在Unity“Project”面板中创建文件夹来管理你的东西。这些文件夹将会科学的被创建在你的项目中的Assets文件夹中。

注:“Assets”文件夹是“superfolder”包含了任何你添加到“project”面板中的东西。在Unity中,它可能不是可见的,这取决于所选的布局面板(单列或者双列),但是如果你打开文件资源管理器,你就会看见它了。

这是Pixelnest中我们的项目所使用结构的一个参考示例,你可以自行调整来满足自己的喜好。

项目资源

在你的“Project”面板中,你可以找到各种不同类型的资源:

Prefabs

可重用的游戏对象(例如:子弹,敌人,奖励)

Prefabs在一个编程语言中可以看作是一个类“class”,可以实例化为游戏对象。它是一个你可以在场景或者游戏执行过程复制和改变的模具。

Scenes

一个场景基本上算是一个关卡或是一个菜单。

对比于你在“Project”面板中创建的其他对象,场景在“File”菜单中被创建。如果你想要创建一个场景,点击“New Scene”子菜单,然后不要忘记将其保存到“Scenes”文件夹下。

场景需要手动保存,在对场景和其中的元素进行了改变之后却没有保存,这是在Unity中的一个经典的错误。你的版本控制工具将不会看到任何的变化,直到你保存之后。

Sounds

我猜这个很清晰了,看看你是否会将音乐分到另外一个文件夹中。

Scripts

所有的代码都在这里。这个文件夹相当于一个C#项目的根文件夹。

Textures

纹理是你的游戏中的精灵和图像。在一个2D项目中,你可以重命名这个文件夹为“Sprites”。

这在2D项目中并不是非常重要的,但是保留这个命名“Textures”,Unity将会识别和自动执行一些任务。如果你想了解这个问题的话,你可以阅读这个或者这个。

注意“Resources”文件夹:如果你之前已经使用过了Unity,那么你可能知道“Resources”是一个非常有用而且独特的文件夹。它允许你在脚本中加载一个对象或者一个文件(通过使用静态的Resources类)。

我们将不会使用它直到最后(在关于菜单的这一章)。因此,为了简化,我们现在决定不使用它。

我们的第一个游戏场景

“Hierarchy”面板包含了场景中可用的每一个对象。这些都是当你按下“Play”按钮,开始游戏时候所操纵的对象。

对Unity来说,场景中的每一个对象都是一个“game object”。你可以在根场景中创建一个对象,或者创建一个游戏对象的孩子对象。你可以在任何时刻移动一个对象来改变它的父对象。

正如你所看到的,在Level对象下我们有三个孩子对象。

空对象

在Unity中的一个诀窍是创建一个空的对象并且将其作为其他游戏对象的一个“folder”。这将会简化你场景的层次结构。

确保他们都是在(0,0,0)的位置上,这样你将可以更容易的跟踪他们。位置并不重要,因为空对象并不使用它。

注意:改变位置将会影响孩子的相对位置。在本教程中将不会讨论这个问题,所以暂时让空对象的位置是(0,0,0)。

将这些空对象看成是纯粹的逻辑对象。

填充场景

默认情况下,一个新的场景被创建都将伴随一个默认的主摄像机。暂时先不管它。

目前,你需要创建这些空的对象:

  • Scripts:我们将会在这里添加全局脚本。我们使用这个对象来附加一些与其他对象并不相关联的脚本。例如,我们将会附加一个“Game”管理脚本到上面。
  • Render:在这里移动摄像机。同时我们也将光线对象放到里面。
  • level

在Level对象中,添加三个空的孩子对象:

  • 0 - Background
  • 1 - Middleground
  • 2 - Foreground

保存这个场景到“Scenes”文件夹中。将其命名为你想要的(例如“Stage1”)。

你应该有:

提示:默认情况下,一个游戏对象的位置是相对于其父对象的。

这种行为也对摄像机游戏对象产生了一个好的副作用:如果一个摄像机对象是一个对象的子对象,它将自动跟踪其父对象的位置。如果这个摄像机对象在根场景中或者是在一个空的游戏对象内,那么视角将会是固定的。但是,如果你将一个摄像机对象放入一个移动的游戏对象中,那么这个摄像机将会在这个场景中跟随着这个游戏对象。

尽管如此,对于我们的游戏,我们想要使摄像机固定,这也就是为什么我们将摄像机对象放到Render这个空游戏对象中。但是记住这个摄像机的属性将会非常有用。

我们将会在之后的“Parallax Scrolling”章节中讨论这个话题。

下一步

对于一个游戏我们还有很多没有实现,对吗?

我们刚刚创建了我们游戏的基本结构。在下一章中我们将会添加一些有趣的东西:背景和一些元素!