横幅_不安

作者:Ben Tristem

对初学者指南有兴趣吗?看看Ben的全部统一课程。

注意:这篇文章是我们“入门”系列免费文本教程的一部分,是我们最受欢迎的课程主题的一些免费文本教程。

要跳转到特定部分,请单击下面的内容表:

介绍

对我来说是统一吗?

Unity是否只是用于制作游戏?

如何使用本指南

如何建立统一

关于Unity版本

下载和安装

创建一个新项目

深入C升调(c#)

为什么我们要先编程

写下你的第一个脚本

C#Syntax基础知识

基本的游戏设计

概念、规则和要求

大理石迷宫概念

精益生产游戏

滚珠滚动

创建游戏场景

物理球

预览倾斜控制

跨平台控制

Unity的虚拟控制系统

CrossplatformInput包装

编写控制代码

使用游戏手柄

跨平台输入代码

使用输入变量

从代码中旋转对象

创建灵敏度控制

波兰和部署

修复明显的问题

将项目转换为网站

分享网页游戏

下一步


介绍

对我来说是统一吗?

Unity是一个视频游戏开发环境,深受专业和betwayapp下载安装业余游戏开发者的欢迎。Unity可以从一个统一的基础上将游戏部署到广泛的平台上。你可以将游戏部署到手机、主机、PC等平台。

多年来,Unity在业内获得了尊重。它已经占据了超过80%的独立开发者市场,并且随着图像和专业工具的不断完善,它也成为大型游戏公司的首选工具。

无论您是敏锐的业余还是寻找一个严肃的开发平台的游戏工作室,统一值得关注您的注意。betwayapp下载安装

这个实用的指南会让你有一个好的开始。

Unity是否只是用于制作游戏?

实际上,没有!Unity使得开发移动,桌面和浏览器应用程序非常容易。此外,您可以访问地理定位,加速度计等。这使得Unity成为任何图形密集型应用程序的一个很好的工具,特别是当您想要部署到多个平台时。

公司已经使用Unity来创建产品展示、增强现实应用程序、培训项目等等。

如何使用本指南

这个免费指南旨在帮助你进入Unity没有任何编程或游戏开发经验。betwayapp下载安装

如果您确实有经验,浏览并寻找对您有用的零件。请注意,页面顶部有一个可点击的内容表,您可以下载我们的起点以获取大多数练习。

要从本指南中获取最大,要激活是很重要的。也就是说,在阅读的同时,在读取的同时打开统一副本,并随后与练习一起进行。你只是通过做来真正学习。当你看到Cmd / Ctrl +键我将分别给你PC / Mac的选择。

如果你想知道什么时候应该活跃起来,什么时候应该读书,那就看看有编号的清单。1、2、3的列表将是为您设计的一系列步骤。如果您离开了指南,请记住保存您的工作,以便当您再次使用时可以随时使用。

祝你愉快,并随时保留这个页面的快捷方式。

如何建立统一

关于Unity版本

为了运行Unity,你需要一个现代的Mac或PC;读了系统需求关于Unity的网站,如果有疑问。让我们潜入并安装Unity。如果您已经这样做了,请随时跳转到下一部分。

使用旧版本

我们将使用Unity 5,因此,如果您正在运行旧版本,则首先升级将付费。如果您不想升级,Unity 4.6也应该没问题;统一5中只会有一些微小的差异和额外的功能。

Unity 5有两个版本,个人版和专业版。我们将使用个人版,这是完全免费的,直到你赚10万美元。参见Unity中的“你可以使用哪个版本”许可协议有关详细信息。这是一个非常有趣的机会,可以免费使用一个非常强大的系统。

下载和安装

安装Unity就像安装其他软件一样简单。如果你还没有账号,你需要在Unity上注册,但别担心,他们会尊重你的邮箱地址。然而,在安装时有一些事情需要考虑,因此这部分指南,如果你已经安装了Unity,你可以浏览一下。

运行多个版本的团结

如果你想继续安装以前版本的Unity,只需重新命名一个程序文件夹,并保留另一个团结.例如,如果要保留版本4,请将程序文件夹重命名为Unity统一4.在运行安装程序之前。

请注意,当Unity在未来更新自己时,它将更新名为Unity的文件夹中的版本。

请按照以下步骤安装Unity:

  1. 从Unity下载Unity Installer下载页面
  2. 像运行任何其他软件一样运行安装程序。
  3. 让Unity 5, Web Player和Standard Assets检查如下。image22.

    图像18.选择在Mac(上)和Windows(下)上安装哪些组件

  4. 如果你不介意Unity覆盖任何以前的版本,请保留默认安装位置。如果你想在旧版本旁边安装Unity 5,请参阅下面的提示。
  5. 下载需要一些时间,因为它的大小超过1.5 GB。
  6. 如果您已经拥有帐户或创建Unity帐户,请登录在这里.您需要检查您的电子邮件以验证您的地址。
  7. 干得好 - Unity安装完成。

通过虚拟桌面运行Unity

如果您在无法运行Unity的设备上,这是一个很酷的提示,但可以访问可以的机器。你可以跑步桌面共享软件并在你的上网本、Linux机器、Chromebook甚至iPad上远程访问Unity。

创建一个新项目

当您第一次启动Unity 5时,您将看到下面的项目对话框。只需点击新项目开始。

图像30.

image23.当你第一次在Mac和Windows上运行Unity时,你便会看到项目对话框

一旦您在统一内,您可以创建一个新项目文件>新项目,或打开现有的使用打开项目相当标准的东西!

以下是Unity的默认接口。这是您将在哪里度过很多时间。还有一个需要考虑的程序,Monodevelop,它是一个用于编写代码的集成开发环境(IDE)。betwayapp下载安装

image01.

图像25.如何在Mac和Windows上添加新的标签页

从截图中可以看到,界面是由几个“选项卡”组成的,比如层级,场景,游戏,检查器,项目和主机.你还会注意到Mac和Windows版本的外观非常相似,所以从现在开始,如果差异很大,我只会包括Windows的截图。

即使您可能不明白他们中的任何一个,让我们现在对界面感到舒服。

  1. 尝试抓住标签之间的条形以重新尺寸。
  2. 如上所示,尝试通过右键单击添加新选项卡。
  3. 抓住标签并拖动它以分离窗口。
  4. 通过单击右上角的布局来恢复默认布局。(见下文)

image21.

回到Unity的默认布局

深入C升调(c#)

我们将教你在C#中写游戏。这是发音为“C-Sharp”,但写得C#就像音乐符号一样。C#是一种强大,现代和高度可转换的编程语言,构成了Microsoft的.NET Framework的基础。更好的是,这刚刚成为开放来源,使其成为一个更有价值的语言。

语言的统一支持

也可以使用UnityScript (JavaScript的一种变体)编写代码。然而,有一些限制是可能的。本指南将只关注c#。Unity以前支持Boo,但现在已经停止了。

为什么我们要先编程

Brian Tracy写了一本名为吃掉那只青蛙》!这个想法是,如果你有不愉快的事情,请先做到。团结有很多钟声和吹口哨,诱惑是潜入并开始制作漂亮的东西。虽然这首先非常满意,但现实是你需要要知道如何代码制作一个独特的游戏。

image27.

图片来自维基百科,由布莱恩Gratwicke

在我们开始使用漂亮的东西之前,我们将专注于学习代码的基础知识。这样,当我们到达更高级的工具时,您将理解如何正确使用和修改它们。完成此项完成将大大提高您的统一体验。

写下你的第一个脚本

Unity与一个名为MonoDevelop的集成开发环境(IDE)捆绑在一起。betwayapp下载安装这就像一个文本编辑器,带有一些额外的功能,可以帮助您更快、更准确地编写脚本。

使用Visual Studio与Unity

如果您更先进并更喜欢不同的IDE,则可以使用Unity使用Visual Studio。但是,这样做超出了本指南的范围。

您必须将文件保存在Monodevelop中,以便团结通知更改。让我们潜入并编写我们的第一个代码。

  1. 找到项目选项卡(默认情况下左下方),并右键单击“资产”窗格中。选择创建> C#脚本.名字的脚本你好世界.Unity将在最后自动添加.cs(c-sharp)。
  2. 将此新脚本拖到层次结构中的主摄像头上。必须将脚本连接到运行的对象。
  3. 注意,当你“检查”主摄像机时,现在有一个脚本附加。图像20.如何将脚本附加到游戏对象上
  4. 双击资产中的脚本,在几秒钟后,Monodevelop应该打开。所有新脚本都开始看起来像下面的脚本。现在,让我们只关注我们将在第8行开始的start()方法内部的内容。您稍后会学会所有这一切。

    image26.

    Image33.MonoDevelop在Mac(上图)和PC(下图)上的表现

  5. 从“Hello World!”开始是编程的传统。"锻炼,所以我们不要打破这个传统。在第8行添加以下代码,如下所示:打印(“Hello World”);完全正如书面。
  6. 将文件保存在Monodevelop中Ctrl / Cmd + S.这将允许团结来看改变。
  7. 回到你的Unity窗口,然后击中按钮(或单击编辑>游戏).您应该在控制台选项卡中看到您的消息,如下所示。图像15.

    如何运行你的“游戏”,并查看控制台输出

如何在统一中重命名脚本

如果您想重命名脚本,请通过突出显示单词类后的名称,并使用cmd / ctrl + r(用于重命名)。键入新名称,以大写字母开头,留下复选框,然后单击“确定”。这将重命名类(稍后更多)和您的文件名。

图像

在MonoDevelop中重命名脚本

恭喜 - 你写了第一行代码。本进程编写脚本并附加到游戏对象的基础符号如何为您的需求定制Unity。通过一些经验和仔细的规划,您的想象力成为您与Unity所做的事情的唯一限制。

C#Syntax基础知识

复制和粘贴我的代码一切都很好。当然,它有效......在我写它之前,我有不公平的优势。我们真正需要的是你学习为什么代码就是这样写的。

再说一次,现在不要担心语境;让我们学习“由内而外”编码。这意味着你应该理解这句话Start ()更新 ()等,最后才明白那神秘的样子public class HelloWorld: MonoBehaviour {}和其他代码。

image19.

我们用猴子看猴子做时尚写的代码

注意Monodevelop如何为我们突出显示橙色的字符串。尝试删除第一个你会看到橙色的高光是在这一行的后面才开始的。此外,整行代码现在是无效的,因为MonoDevelop期望里面有一个字符串print ();你自己试试吧CMD / CTRL + B..这将构建您的项目,并检查您的代码。

图像10.

由于缺少字符而引起的错误

您可以从此错误中看到,这非常重要,即您准确地编写代码。即使是一个缺少的角色也可能导致似乎整个负荷的麻烦。别担心 - 一旦你把领先的“回来,一切都会在世界上再次善。以下注释尤为重要:

既然你已经知道了如何进行学习,我们将在“情境”中学习剩下的内容,即制作游戏。

基本的游戏设计

在本节中,您将使您的第一场工作游戏成为统一。我相信日时学习的最佳方式是在时间和背景下。这意味着我们将专注于一个清晰的结果,然后了解我们需要它的内容,以及我们正在努力解决的问题的背景下。

概念、规则和要求

我很喜欢“就这么做”,但是一定的计划是至关重要的。想象你在做拼图。最低限度的规划是确保你使用的桌子足够大,否则移动它会很麻烦。你的游戏也是如此。

以下是您初次计划时需要考虑的三件事:

概念 这个游戏是关于什么的?想象一下你告诉你的伴侣。
规则 你能赢/输吗?如何?还有什么规则吗?
要求 我们需要什么资产?2D / 3D美术?音乐吗?声音吗?

只需花时间将这些东西写下来,可能有一些草图,你会惊讶于稍后会让你追踪多少。与其他人合作时,这尤为重要,这样你就是在同一页上的字面上!

从简单的游戏开始

在你的头几款游戏中尝试并想出一个原创理念是一个常见的错误。用一个已知的概念来“摸爬滚打”要好得多。通过这种方式,你便能够在面向世界发行自己的梦想游戏之前完betwayapp下载安装善自己的开发、部署和营销技能。

大理石迷宫概念

概念 基于简单的物理“大理石迷宫”游戏。这个想法是倾斜播放空间,并将球纳入目标。
规则 球必须在洞的底部休息,以获胜。如果球离开播放空间,你会失败。
要求
  • 两个迷宫3D模型作为前两个关卡。
  • 球滚动声音。
  • 球撞击墙壁的声音。
  • 一个手柄,如果你想这样控制的话。

用于倾斜控制......

  • 一个USB电缆
  • Unity Remote应用
  • iOS或Android设备*

*目前还没有Windows Phone,因为它需要一个特殊的Unity插件。

图像08.

我们游戏空间的粗略模型

出于本指南的目的,我们将提供所需的3D模型。如果您想了解有关3D建模的更多信息,请参阅完整的Blender创建者

精益生产游戏

我们将练习精益游戏生产。这意味着我们将努力通过获得我们的游戏基本版本的犯罪造成的错误。我们将不断关注在真正的目标设备上使我们的游戏变为可玩状态,因此我们可以获得玩家反馈。

我们将组织我们的工作流程,以便稍后易于进行更改。这样,我们可以继续迭代我们的设计,直到它恰到好处。在我们在玩家的脸上看到情感,我们真的不知道要努力,并且在我们需要删除的生产过程中妨碍这种情况的任何事情都是“胖”。

交付意味着将产品推向更广阔的世界以获得反馈。这很可怕,但很重要。Seth Godin已经做了很多很棒的工作,这将有助于你打击任何“阻力”到运输。

滚珠滚动

在本节中,我们将创建我们的第一个“场景”。场景是模型、声音等资产的集合。有些游戏每个关卡只使用一个场景;其他时候,一切都可以在一个场景中完成。在我们的例子中,我们将从一个场景开始。

创建游戏场景

要完成场景设置和面板导入,请遵循以下步骤:

  1. 如上所述创建新的3D项目以上
  2. 立即保存第一个场景游戏通过点击文件>保存
  3. 下载maze01.fbx.模型.将其导入您的资产文件夹,如下所示:图像13.右键单击“资产”选项卡以显示此菜单
  4. 将此模型从您的资产拖到层次结构中以在场景中创建此模型的实例。image29.如何将模型拖动到场景/层次结构中
  5. 恭喜 - 您已在Unity中导入了您的第一个3D模型。

关于层次结构和场景

层次结构只是这个场景中所有内容的文本表示。所以这个游戏。unity场景包含一个主摄像机,方向光和Maze01 3D模型。

物理球

现在的迷宫游戏空间非常基础,这很好。这就是我们所说的占位符资产。现在阻碍这款游戏乐趣的最大因素是缺少球,以及无法倾斜游戏空间。添加一个球如下:

  1. 打开项目,或下载我们
  2. 点击游戏对象> 3D对象>球体在场景中添加一个球体。重新命名领域,要么通过在层次结构中慢慢单击两次,或者通过在检查器顶部重命名并击中ENTER。
  3. 移动通过在检查器中设置变换值来(0,0.6,0)。我们将在以后让球看起来更漂亮。图像07.重新命名,并设置游戏对象的变换位置
  4. 添加刚体到球体通过点击添加组件按钮在检查器底部,并选择物理学> Rigidbody.这将使物理引擎控制球体。图像06.将组件添加到单位的游戏对象中
  5. 选择层次结构中的主摄像机,并将其定位为(12,10,-10)。设置旋转为(40,-50,0)。
  6. 注意球从地板上掉下来。这是因为Maze01.游戏对象不是一个有一个“碰撞者”,它可以像稳定对象一样行动。

    关于Play和Play Mode Tint

    单击播放按钮时,编辑器中的某些Windows被暗示不同的颜色。在播放模式下,不会应用在这些窗口中的任何更改。在您希望保存的更改之前,请务必再次单击播放按钮。

  7. 展开Maze01.在层次结构中的游戏对象,并找到迷宫网子对象。将网格撞机添加到迷宫网孩子通过点击添加组件>物理>网格撞机器在检查员。根据菜单的最后设置方式,网格碰撞器可能不会出现在列表中。您可能必须在搜索框中键入“网格”以通过单击Little X来清除以前的搜索。image24.选择子迷宫对象(实际网格),并添加网格撞机器
  8. 再次运行游戏,注意球体现在停留在表面上。如果球仍然掉落,检查它肯定是你添加碰撞器的子对象,而不是顶层Maze01.对象。
  9. 恭喜你,你进步很快。

阻止球员陷入困境

如果你非常关注细节,你可能已经注意到我在场景中放置了0.1个地面上的游戏单位(它的半径是0.5,而我们将其设置为0.6)。我这样做是为了防止它卡在地上。

所以,要回顾,到目前为止,我们已将两个游戏对象添加到Unity。球是一个原始对象,所以我们使用了Unity的内置球体。迷宫更复杂,并且在搅拌机中创建并导入.fbx文件。这是导入资产的常用文件格式。Unity确实支持直接打开搅拌机文件,但您需要安装程序 - 因此提供.fbx。

然后我们给这两个对象添加了“碰撞器”。这些元素告诉Unity的物理引擎对象在哪里,并阻止它们彼此穿过。我们还在球上添加了刚体。这给了球质量,并使重力作用于它。我们将在稍后调整物理。

预览倾斜控制

很快我们需要编写一些脚本来获得一些控件(例如,键,移动设备的加速度计,游戏手柄等)来移动迷宫。但是,我们可以在不执行以下任何编码的情况下预览此效果:

  1. 打开项目,或下载我们
  2. 游戏,选择场景选项卡。物理引擎现在将运行,但我们可以强制操作对象。
  3. 选择Maze01.在层次结构中的对象,然后选择旋转工具(或E键).您现在可以在场景视图中拖动“ball”以旋转对象。拖动彩色线条限制旋转到一个轴。image29.在播放模式下使用旋转工具
  4. 请注意,该球目前不移动。这是因为球开始在播放空间上休息,而我们旋转的那一刻,球在它有机会移动之前,球在它里面陷入困境。
  5. 通过单击停止游戏运行再次。这很重要,因为在游戏时,在游戏时,您制作的任何变化都会丢失。
  6. 将球拖到内部Maze01.层级中的游戏对象。这将使球随着比赛空间移动。当做对了,球将在相同的压痕水平作为迷宫网格。Image32.之前和之后的层次结构“挑剔”
  7. 游戏再次进行,并旋转Maze01.你上面的对象。现在球应该绕空间滚动。

这可能是简单的东西,但Unity在这里为我们做了很多工作。如果你必须从头开始写下这一切,那么即使是经验丰富的开发人员,也需要数周或几个月!

image34.

你的“游戏”到目前为止。

有样学样?

你可能会想知道你是否真的是通过追随我来学习统一。我是一个坚定的信徒挑战你自己做事,在我的统一视频课程我们经常这样做。然而,在这种书面形式下,你很容易提前“作弊”,所以我试图集中在告诉你做什么和解释为什么。

跨平台控制

你已经瞥见了Unity的物理引擎的力量。现在我们将探讨另一个统一的优势:它能够将游戏部署到来自同一代码库的许多平台。

如果没有额外的许可证或模块,您可以将游戏部署到:

...以及其他模块和许可证,您也可以部署到所有主要控制台和Windows电话。

一种尺寸不适合所有

虽然能够部署到这么多平台上是一件很棒的事情,但大多数游戏都受益于面向少数平台的设计。即使是最大的游戏工作室,当他们试图将一款游戏延伸得太远时也会遇到困难,这通常是因为控制系统的根本差异。

Unity的虚拟控制系统

为了充分利用这种跨平台能力,我们需要使用一个“虚拟”控制层。这位于物理控件和代码之间,是使这种跨平台能力成为可能的事情之一。

图像17.

可视化虚拟控制层

网上的许多教程和论坛都会使用一个代码“类”叫做输入.处理用户输入。我们将使用crossplatforminputmanager..这有点复杂,需要更多步骤,但当你能够更轻松地将游戏从网页、Mac和手机平台切换到其他平台时,这一切都是值得的。

CrossplatformInput包装

我们将导入我们的第一个标准Unity资产包。这包含了许多非常有用的脚本和“预制”(游戏邦注:即预制游戏对象),能够让我们的游戏在许多设备上运行。

  1. 打开项目,或下载我们
  2. 点击资产>导入包> crossplatformminput.如果你的菜单中没有这些内容,可以从Unity网站下载资产包在这里图像35.如果缺少,如何下载Unity的标准资产包装
  3. 通过保留所有复选框并单击,导入整个资产包进口图像16.在包中导入所有资产
  4. 通过查看您的方式确认包已导入项目标签,并找到crossplatforminputmanager.cs.资产>标准资产> CrossplatformInput>脚本image31.在标准资产包中查找脚本
  5. 做得好 - 您已经了解了另一个有用的Unity技能:导入资产包。

请注意,包还将安装一个名为“编辑器”的文件夹。留下这一点,因为包可能需要正确运行。

使用资产商店

另一个统一的巨大优势是它的繁荣资产商店。这是一个包含数千个免费和支付资产的在线存储库,包括有用的脚本,3D模型,2D精灵等等。

image04.

你可以通过简单地在Project选项卡中搜索找到免费的资源。

编写控制代码

是时候回到编码了。在这个子部分中,我们将写一些简单但强大的代码,使我们首先使用键盘倾斜我们的迷宫。然后,我们将探索如何使用移动设备上的游戏手柄,甚至是倾斜传感器的工作。

这不是真正的动作

电影只是仍然是仍然框架的快速序列。游戏以同样的方式工作,通过迅速播放一架框架,给出运动的错觉。在这些框架之间,游戏中的几乎没有或没有任何事情发生。我们的工作是为了确保帧速率至少为每秒24-30帧(FPS)以保持这种幻觉。

在介绍中,您看到如何在内部调用方法开始(),我解释说,游戏首次开始时将运行此代码。这一次,我们需要代码来运行“连续”,或更准确地说,游戏必须响应每个帧的输入。要做到这一点,我们将把我们的代码放在里面更新()方法。让我们来看看:

  1. 打开项目,或下载我们
  2. 创建一个新脚本tiltcontrol.cs.,并把它连接到Maze01.对象。您可以通过右键单击资产和选择来执行此操作创建> C#脚本.拖动到Maze01.对象来附加它。
  3. 我们需要访问刚刚导入的crossplatformminput模块,以便让我们的TiltControl.cs脚本访问这个模块。双击脚本打开它,并在脚本的顶部添加这一行:using unitystandardassets . crossplatformminput;using语句的顺序并不重要。
  4. 在 - 的里面更新()方法添加以下行以将“垂直”控制轴的值打印到控制台:

    打印(CrossplatformInputManager.getaxis(“垂直”));

  5. 最终代码tiltcontrol.cs.在下面。现在保存脚本并将其附加到Maze01.父游戏对象。Image37.这个阶段的倾斜控制脚本
  6. 打击开始比赛。单击Console选项卡,可以看到打印语句。
  7. 最后,单击“游戏”窗口,然后按键盘上的向上和向下箭头(或W和S)。您将看到快速接近+1和-1的值。image02打印到控制台的输入值(必须在播放模式下,然后单击游戏选项卡)
  8. 干得好 - 您正在阅读控制输入。

让我们把这行代码分解:

打印(CrossPlatformInputManager。GetAxis(“垂直”));

首先,我们有print ();方法。在方括号内,该语句希望输出一些内容。crossplatforminputmanager.叫做类。这是相关方法的集合,或做某事的食谱。如果你喜欢,可以把它想象成一本特定的烹饪书。

这个课程的方法之一是GetAxis ().这个方法接受一个字符串,告诉它要“获取”哪个轴的值。在我们的例子中,这个字符串是“垂直”.这GetAxis ()方法返回一个值 - 在这种情况下,一个名为float的东西,浮点数短。这是一个十进制数,可以采取大范围的值,但在我们的情况下,-1表示完全下降,并完全+1。

为什么键盘值不仅仅是+/- 1

您将注意到从键的值默认情况下,不会立即转到+/- 1。这是一个被称为“重力”的东西,它有助于键盘控制更像触控板或倾斜。您可以在Unity的Docs中阅读更多相关信息在这里

在编写代码时,MonoDevelop可以帮助您在输入时理解方法。要使上面的代码工作,你输入的内容必须“编译”——也就是说,对计算机有意义。如果是这样,你会得到如下提示:

image09.

MonoDevelop智能感知

使用游戏手柄

我们的游戏已准备好接受来自游戏手柄的输入而无需进一步的工作。简单地:

  1. 以你通常的方式连接手柄;你的游戏。
  2. 点击进入游戏窗口。
  3. 上下移动左操纵杆。您应该看到控制台中的值发生了变化。

Unity对我的手柄没有反应

在Unity打开时,Gamepad必须连接。如果Unity没有响应您的游戏手柄,那么关闭Unity,请检查您的游戏板是否已连接,并重新开放Unity。

如果你有一个,请保持游戏手柄。在下一节中,我们将使我们的控件实际上倾斜游戏空间,并且乐趣将真正开始。

跨平台输入代码

在本节中,我们实际将移动播放空间。将有一些新的编程概念介绍,包括变量,一个名为Vector3.,以及如何访问对象的“变换”来旋转它。

如何在c#中声明变量

在C#中声明变量的常规模式,并给出初始值,是:

type varName = initialValue;

类型通常以大写字母开头,除了一些常见的内置“原始”类型,如float,string和int。“公约”是用小写字母编写变量名称,但大写中途强调单词很好。

initialValue必须与左侧声明的类型相同。也就是说,字符串必须存储在字符串中,浮动等浮点等。

使用输入变量

因为水平轴和垂直轴的输入值从-1到+1不等,所以我们需要告诉Unity以一定的比例旋转迷宫。例如,我们可以决定将控制杆一直向上推(值为+1)将导致旋转90度或30度。这是我们对控制灵敏度的选择,你可能已经在游戏菜单中看到了。

因为这个值会随着游戏的进行而变化,所以我们需要一个变量。在本例中,我们需要为水平和垂直输入值存储两个浮点数。c#提供了一个方便的结构来存储三个浮点数,称为Vector3.

为什么是三个数字,为什么是Vector3?因为即使这次我们没有在y轴上旋转,一般情况下我们可能想要。此外,当我们在下一小节中旋转迷宫时,我们需要提供一个Vector3.所以我们也可以从一个开始。

  1. 打开项目,或下载我们,打开tiltcontrol.cs.脚本。
  2. 只是在更新 ()方法,添加Vector3 inputValue;.如果不确定,练习后会看到屏幕截图。
  3. 的下一行更改更新()方法如下:inputValue。x = CrossPlatformInputManager。GetAxis(“垂直”);

    inputValue。y = 0 f;

    InputValue.z = CrossplatformInputManager.getaxis(“水平”);现在,代替将输入值发送到打印方法,它进入了新变量的相应组件。

  4. 替换打印线,以便我们可以看到在我们的变量中存储的内容:打印(inputValue。x + ", " + inputValue.z);

  5. 保存脚本游戏并查看控制台,或更轻松,屏幕的左下方在Unity的左下角,显示了最后一个控制台输出。您现在应该看到水平和垂直控制输入(键或键盘)的值。
  6. 做得好 - 你接近了!

图像11.

我们控制代码的当前状态

为什么用c#写0f

零之后的f告诉C#这是一个浮点数。In the case of zero, this can be left out, but it’s good practice to write it in for now because if it was any other number than zero, you would get an error if you didn’t explicitly tell the computer what type your number is.

尝试读取输入值并使用它来设置旋转一步是很有诱惑力的。然而,如果它不起作用,就很难找出哪里出了问题。在尝试像这样使用它们之前,不需要花费太多额外的时间来检查控制台中的值是否正确,而且通常会为您节省很多后续的挠头!

从代码中旋转对象

在这里,我们将找到如何从代码中操作游戏对象的转换。

  1. 打开项目,或下载我们,然后回到你的tiltcontrol.cs.脚本。
  2. 在更新方法的底部,添加下面的行。它必须在底部来,因为我们无法在我们声明它之后,我们无法使用变量:transform.eulerangles = InputValue;
  3. 游戏,点击游戏窗口,并尝试使用光标键(或WSAD)。如果你有手柄,也可以试试。注意,游戏空间倾斜,但只有一点点——事实上,它只倾斜了1度。
  4. 做得好 - 您有工作的跨平台控件。现在我们需要实施控制灵敏度。

这是我们添加的代码行:

transform.eulerangles = InputValue;

变换。eulerangles.在左侧对应于当前脚本的游戏对象的变换组件。因为tiltcontrol.cs.是在旁边Maze01.GameObject,变换对应于这种旋转Maze01.

.eulerAngles位是访问变换的旋转属性的方法。这相当于在检查器中设置旋转角度,但当然你的玩家在游戏运行时不能这么做,所以这是在代码中如何做到的。

image36.从脚本中访问旋转

局部坐标与全局坐标

当你独自探索Unity时,你会遇到局部和全局坐标。在这个简单的游戏中,迷宫位于原点,没有旋转,所以在实际操作中两者没有区别。但是,请注意两者的区别。有一个合理的解释在这里,以及其他地方。

创建灵敏度控制

一级倾斜不一定是令人兴奋的游戏。所以,这里是如何使用另一个变量来允许您调整控制灵敏度。在此游戏的更高级版本中,您甚至可以创建一个用户界面(UI)以允许您的播放器自行更改此操作。然而,我们的工作是找到一个可行的起点。

  1. 打开项目,或下载我们.回到你的tiltcontrol.cs.脚本再次。
  2. 我们需要一个可在检查器中访问的变量。为此,请在“类定义”下添加以下代码行:公共浮动灵敏度= 90f;

    记住使用Tab键缩进代码。当你完成时,它应该是这样的:

    image03.在哪里添加公共变量

  3. 现在编辑旋转的行,以通过灵敏度将输入值乘以:Transform.eulerangles = InputValue *敏感性;在这种情况下,我们现在将旋转+/- 90度,因为当输入值的分量从-1到+1变化时,它们将乘以90。
  4. 保存脚本再次游戏,并注意旋转现在是90度完整的。使用值您可以在直到视觉上验证,起初是有道理的。
  5. 停止游戏,然后点击Maze01.检查员。注意,您现在可以在检查器中更改灵敏度了。设置值为30,使最大倾斜30度。图14.

    在检查器中设置公共变量

  6. 再一次,并注意最大倾斜度较低。在播放模式下更改此值以及游戏停止时进行实验。请注意,如果在播放模式下更改,则该值不会保持。
  7. 最后,需要注意的是,摄像机的位置并不适合玩游戏。我们稍后会修复这个问题,但现在,让我们假装我们错过了它,继续发行我们的游戏。

规范和检查器中的公共价值

请注意,我们向我们的敏感性控制了代码(90度)的值,以及检查器中的另一个(30度)。您可能想知道哪一个优先于哪一个,并且在两个地方有一个值并不危险。

检查器中的值覆盖代码中的覆盖。但是,在代码中设置明智的起始值仍然是一个好主意。

波兰和部署

我们的游戏在这个阶段还不够完美,但它是可玩的。让我们先解决这些明显的问题,然后分享这些问题以获得我们的第一个反馈。这样做的原因是发现我们太接近而无法注意到的东西,并尽早修复它们。

修复明显的问题

在我愿意与任何人分享这一点之前,我想至少理清以下几个明显的问题。但是要小心,因为你可能会因为完美主义而放弃“发行”你的游戏。掌握基本操作,并分享你的游戏。

这是三个,只有三个问题,我们现在要修复。

  1. 球太慢移动了。为什么?因为物理引擎默认设置为模拟1个世界单位= 1米。这意味着我们有一个直径1米的球,在一个16米的场地上。这就像网球场上的一个巨大的沙滩球——难怪它这么慢!我们将通过增加至少10次重力来修复它。
  2. 控件不会使用屏幕“排队”。这是因为我们还没有试图让他们排队。迷宫具有任意旋转,我们需要进行一些改变以使控制排列。但是,与此同时,我们必须照顾下一个问题。
  3. 视角很尴尬。在匆忙制作一款游戏时,我们并没有真正考虑镜头角度。这是件好事,因为你不知道你想要什么,直到你能玩它。现在我们可以播放它了,是时候同时固定摄像机角度和控制对齐了。

让我们一次性解决这三个问题。

  1. 打开项目,或下载我们
  2. 移动主要的相机到(0,10,8),旋转(50,180,0)。这对视图有帮助,但现在垂直控件被反转了。
  3. 开放tiltcontrol.cs.并通过在下面添加减号签名来修改下面的线=符号。这将反转垂直控制值。记得保存你的脚本。

    inputValue。x = - crossplatformminputmanager . x = - crossplatformminputmanager . x = - crossplatformminputmanager . xGetAxis(“垂直”);

  4. 确保你的游戏不是在播放模式,然后点击编辑>项目设置>物理.将重力尺寸设置为-100,比它大约10倍,但仍然指向。这将更快地加速球。图像12.

    增加游戏的重力规模

  5. 游戏又来了,注意,现在的游戏好多了。

将项目转换为网站

在此子部分中,我们将向您展示如何使用Unity的“构建设置”来将游戏的目标平台更改为WebGL。此功能是Unity 5的新功能,允许您使用HTML 5在浏览器中运行的游戏,而不会播放器甚至需要插件。

以下是如何将Unity项目转换为Web构建。

  1. 打开项目,或下载我们
  2. 点击文件>构建设置提出平台构建设置。
  3. 通过单击添加游戏场景添加当前,或将其从项目选项卡拖动到“构建中的”场景“面板中。
  4. 在平台下选择WebGL,然后单击“交换机平台”。图像05.

    构建设置部署到网上

您现在应该在Web中拥有完全运行的游戏。有几个局限性:游戏手柄控件无法正常工作。为此,您需要再次构建PC,Mac或Linux。此外,您需要使用Chrome,Firefox或Safari作为浏览器。

您还可以构建给“Web播放器”。这将在Internet Explorer中工作,游戏手册输入将工作。但是,您的播放器需要安装Unity Plugin。

分享网页游戏

如果您想分享您的游戏,您可以zip并发送大理石文件夹给他或她在本地玩耍。或者,如果您知道如何执行此操作,您可以在某些网络托管中“主持”此文件。

如果你有一个付费版本的Dropbox,你可以简单地把它放在你的公共文件夹中,分享公共链接。你可以用这种方式使用多少带宽是有限制的。你可以在这里在Dropbox上播放我的版本

下一步

感谢您阅读本指南。如果你刚刚撇去它,那么我鼓励你花些时间才能回去并遵循练习。请记住,您不需要完成所有这些,因为我为您提供了一个练习的起始状态,请为您下载。

通过搜索YouTube视频来继续您的统一教育,并考虑在我们的史诗50小时内注册Udemy视频课程

如果你喜欢书面形式,你可以预定我即将出版的书亚马逊

很高兴能教你。

本特里斯特姆

统一的顶级课程

Unity MultiPlayer:中间C#编码和网络
Gamev.TV团队,Rick Davidson,Nathan Farrer(又名Dapper Dino)
4.4 (857)
Unity对话与任务:中级c#游戏编码
Sam Pattuzzi, Rick Davidson, GameDev。电视团队
4.7 (306)
完成C#Unity Game Developer 3D
Ben Tristem,Rick Davidson,Gamev.TV团队
4.7 (27287)
畅销书
在统一中建立自己的第一人称射击游戏/生存游戏
游戏研究所有限公司
4.5 (2,102)
Shader开betwayapp下载安装发从CG的统一开发
Penny de byl,Penny @ holistic3d.com
4.8 (2624)
学习Unity的实体组件系统以优化您的游戏
Penny de byl,Penny @ holistic3d.com
4.8 (396)
学习在统一中创建一个动作RPG游戏
詹姆斯·多伊尔
4.7 (94)
了解如何在Unity 2021中创建2D塔防防御游戏
Gianny Dantas本人交出密码
4.5 (54)
统一的探索
威尔梅林
4.8 (329)
学习编写Unity计算着色器
Penny de byl,尼古拉斯lever,penny @ holistic3d.com
4.4 (93)
Unity人工智能入门指南。
Penny de byl,Penny @ holistic3d.com
4.5 (1,891)

更统一的课程

团结学生也学习

赋予你的团队。引领行业。

通过Udemy for Business订阅您组织的在线课程和数字学习工具图书馆。

请求一个演示