Basics - GameObjects and Scripts

这篇教程提供了介绍如何使用Unity进行工作的方式。
这个系列更新到了2020版本。

Game Objects and Scripts Creating a Clock

用简单物体创建一个钟。
写一个C#脚本。
旋转钟的指针并显示时间。
指针的动画。

这是这个系列的第一篇教程关于使用Unity的基础。在这里我门将创建一个简单的时钟并编写一个组建去显示当前的时间。你不必拥有任何关于Unity的经验,但是我们假定您对多窗口编辑器应用程序有一定的的使用经验。

在我最近的所有教程底部,您都可以找到教程许可证的连接,包含已完成的项目的存储库以及教程也面的PDF版本。

这篇教程使用Unity 2020.3.61版本进行开发。

1.创建一个工程

在我们能开始使用Unity编辑器进行开发的时候,必须先创建一个工程项目。

1.1 新建项目工程

当你打开Unity的时候,你会先看到Unity Hub。这是一个启动器(Unity Hub)并且是创建和打开项目的安装app,安装unity的版本,并且可以进行别的操作。如果你没有Unity 2020.3或者更高版本使用Unity hub安装它。

什么版本的Unity是相适应的
Unity每年都会发布多个新版本,有两个并行的发布计划。最稳定和安全的版本是LTS版本。LTS代表长期支持,对Unity来说是两年。我坚持使用LTS版本的教程。这篇教程特意使用2020.3.6,版本号的第三部分表示补丁的发布版本。补丁版本包含错误修复和很少的新功能。另外一个f1表示后缀表示正式的最终版本。任何2020.3版本都适用于本教程。
Unity的最高版本是开发分支,它引入了新功能,并可能删除旧功能。这些版本不像LTS版本那么可靠,每个版本只支持几个月。

我的教程偶尔包含一些问题和解析,经常在灰色的框内,就像上面那个一样。在网页端解析默认是隐藏的。可以单击问题显示出来。

当你创建一个新的项目工程,你可以选择它的Unity版本和模板。我们将使用标准3D模板(Standard 3D template)。一旦它被创建,它将被添加到项目列表中,并在适当的版本的Unity编辑器中打开。

我能不创建一个不同渲染管线的项目工程?
可以,唯一的区别是项目工程的场景中默认的东西多了并且材质球将看起来不一样,你的工程将一直包含相适应的package包。

1.2编辑界面

如果你没有自己定义的编辑器界面,你将最终打开默认的窗口布局。

默认布局
默认的层级包含了所有我们需要的,但是你也可以自己定制他们成你自己喜欢的样子,通过重新排序和分组窗口。你也可以打开和关闭窗口,如其中的AssetStore。每个窗口有自己的信息选项,可通过右上角三点按钮访问。除此之外,大多数都有一个带有更多选项的工具栏。如果你的窗口长得不像教程中的一样,–举例,scene窗口有一个统一的背景,而不是一个天空框,那么他的一个选项就是不同的。

你可以通过Unity编辑器右上角的下拉菜单切换到预制布局,你还可以将当前布局保存在那里,以便稍后恢复。

1.3 Packages包

Unity的功能是模块化的,除了核心功能之外,还有一些额外的包可以下载并包含在你的工程项目中。默认的3D项目前默认包含一些包,你可以在项目窗口中的packages下看到这些包。

默认的 packages包这些包可以被隐藏,通过切换项目窗口右上角的按钮,该按钮看起来像一直带破折号的眼睛。这纯粹是为了减少编辑器中的视觉混乱,这些包仍然是项目的一部分。该按钮还是显示有多少这样的包。

你可以在package manager中进行管理项目中需要包含的包,可以在Window/Package Manager菜单中打开。
package manager,only showing packages in project这些包为Unity添加了额外的功能。例如,Visual Studio Editor 添加融合了Visual Studio editor,用这个IDE编辑代码。本教程不使用所包含包的功能。所以我整体移除了他们。除了 Visual Studio Editor,因为为要用他编辑代码。如果你使用不同编辑器,则需要包含它的集成包。

是否一直需要Visual Studio Code Editor包?
尽管名字很相似,Visual Studio 和 Visual Studio Code 是两个不同的编辑器。你只需要其中一种的包,取决于你需要哪种编辑器。

删除包最简单的方法是首先使用工具栏将包列表限制为仅在项目中(In Project Only)。然后选择包并使用窗口右下角的Remove按钮。Unity将在操作后重新编译,所以,在这个步骤后将花费几秒完成。

在移除Visual Studio Editor之外所有的包时,我在项目窗口中留下了三个可见的包:Custom NUnit, Test Framework, and Visual Studio Editor。其他两个仍然存在是因为 Visual Studio Editor依赖他们。

你可以通过项目设置窗口对包管理器中可见的依赖项和隐式导入包进行操作。通过Edit/Project Setting…选择它的PackageManager类别,然后在Advanced Settings下启动Show Dependencies。

Package Manager Project Setting;显示Dependencies打开

1.4 颜色空间

现在渲染通常是在线性色彩空间中完成,但是Unity仍然默认配置为使用gamma颜色空间。为了获得最佳的视觉效果,选择项目设置窗口的播放器类别,打开其他设置面板,然后向下滚动到其渲染部分。确保颜色空间设置为线性。Unity将显示警告,这可能需要很长时间,但这不会是一个几乎空的项目情况。确认切换。

Color Space设置为Linear
有什么理由使用gamma颜色空间?
只有当你的目标是旧的硬件或旧的图形API。OpenGL ES 2.0和WebGL 1.0不支持线性空间,除此之外,gamma在旧的移动设备上可以比线性更快。

1.5 Sample Scene

新项目包含一个名为Sample Scene 的示例场景,它是默认打开的。你可以在项目窗口的Asset / Scenes下找到它的资源。

项目工程窗口中的Sample Scene默认的Project Window使用两列布局。你可以选择一列布局,你可以通过它的三点配置菜单选项切换到单列布局。

一列布局Sample Scene包含一个main Camer和一个directional Light。这些是game objects.它们在hierarchy窗口下面,在Sample Scene下面。

Scene场景下面的hierarchy物体你可以通过层次窗口或场景窗口选择一个游戏对象。相机的场景图表看起来像老式胶片相机,而定向灯光的图表看起来像太阳。

场景中的图标如何导航到场景窗口?
你可以结合使用alt或option键和光标来旋转视图。你还可以使用箭头键移动视点,并通过滚动缩放。同时,按下F键会将视图聚焦在当前选中的游戏对象上。还有更多的可能性,但这些已经足够你在场景中找到你的路了。

当一个对象被选中时,它的详细信息将显示在检查器窗口中,但我们将在需要的时候介绍给它们。我们不需要修改相机和灯光,所以我们可以通过在层次窗口中点击他们左边的眼睛图标来隐藏他们。默认情况下,这个图标是不可见的,但是当我们将光标悬停在那里时就会出现。这纯粹是为了减少场景窗口中的视觉混乱。

隐藏物体
眼睛旁边的手状图标是做什么用的?
在包含眼睛图标的列旁边是另一个包含手状图标的列。默认情况下,这些图标也是不可见的。当游戏对象的手图标处于活动状态时,不可能通过游戏场景窗口选择对象。这样你就可以通过场景窗口控制哪些对象响应选择。

2创建一个简单的时钟

现在我们的项目工程已经设置完毕,我们可以创建我们的时钟了。

2.1创建一个物体

我们需要一个物体代表时钟,为们将从最简单的游戏对象开始,一个空物体。我们可以通GameObject/Create Empty 选项创建。或者你可以通过层次窗口的上下文菜单中使用Create Empty选项,你可以通过点击打开,通常是右键或单击或两个手指点击。这会将游戏对象添加到场景中。它在SampleScene下的层次结构窗口中是可见的,并立即被选中,现在它被标记为星号,表明它有未保存的更改。您也可以立即更改它的名称,或者稍后再更改。

在层次窗口中选中新物体
检查器窗口显示游戏对象的细节,只要它被选中。在它的顶部是一个带有对象名称和一些配置选项的标题。缺省情况下,该对象处于使能状态,不是静态的,没有标记,位于缺省层。这些设置都很好,除了它的名称。将其重命名为Clock。

选中的Clock
标题下面是游戏对象的所有组件列表。列表总是在顶部有一个Transform组件,这是我们的时钟目前所拥有的。它控制着游戏对象的位置、旋转和比例。确保所有时钟的位置和旋转值都设置为0。其尺度应均匀为1

那么2D对象呢?
当操作2D代替3D的时候,你可以活跃第三个轴,专门用于2d UI元素的对象通常具有RectTransform,这是一个专门的Transform组件。

因为游戏对象是空的,所以它在场景窗口本身是不可见的。然而,操作工具在游戏对象的位置是可见的,它位于世界的中心。

选中移动插件
为什么我在选中时钟后没有看到操作工具?
操作工具存在于场景窗口中。确保你看到的是场景窗口,而不是游戏窗口。

哪个操作工具处于活动状态可以通过编辑器工具栏左上角的按钮来控制。这些模式也可以通过Q、W、E、R、T和Y键激活。该组中最右边的按钮用于启用自定义编辑器工具,这是我们没有的。默认情况下,移动工具是激活的。

操作工具栏
在模式按钮旁边还有三个按钮,用于控制操作工具的位置、方向和快捷。

2.2 创建时钟表盘

尽管我有一个时钟物体,但是我们什么也没看到,我们必须在它身上添加3D模型渲染出来。Unity有一些预制模型我们可以用它创建一个简单的时钟。让我们同通过GameObject / 3D Object / Cylinder在场景中添加一个圆柱体。确保它拥有一个Transform组建在钟上。

代表圆柱体的游戏对象
新的物体比空物体多了三个组建,首先,它有一个MeshFilter,其中包含对内置圆柱网格的引用。

MeshFilter 组建,设置到Cylinder其次是一个MeshRenderer.这个组建目的是确保物体的网格被渲染。它还决定渲染使用什么材质,这是默认材质。该材料也显示在检查器中,在组件列表下面。

MeshRenderer 组建,设置默认的Material
第三个是CapsuleCollider,用于3D物理。该对象表示一个圆柱体,但它有一个胶囊对撞机,因为Unity没有基本圆柱体对撞机。我们不需要它,所以我们可以删除这个组件。如果你想在时钟中使用物理学,最好使用MeshCollider组件。可以通过右上角的三点下拉菜单删除组件。

圆柱不带碰撞体
我们将通过使圆柱体变平来将其变成钟面。这是通过减小其刻度的Y分量来实现的。将其减少到0.2。由于圆柱体网格的高度为两个单位,其有效高度变为0.4个单位。让我们制作一个大钟,将其刻度的X和Z分量增加到10。

缩小圆柱体在这里插入图片描述

我们的钟应该站在或挂在墙上,但它的表面目前是平的。我们可以通过将圆柱体旋转四分之一圈来解决这个问题。在Unity中,X轴指向右侧,Y轴指向上方,Z轴指向前方。所以,让我们在设计时钟时考虑到相同的方向,这意味着我们在沿着Z轴看它的同时看到它的正面。将圆柱体的X旋转设置为90,并调整场景视图,使时钟的前部可见,从而移动工具的蓝色Z箭头指向远离您的屏幕。

在这里插入图片描述在这里插入图片描述
将圆柱体对象的名称更改为“面”,因为它代表时钟的面。它只是时钟的一部分,所以我们将其作为clock对象的子对象。我们通过将面部拖动到层次结构窗口中的时钟上来实现这一点。

在这里插入图片描述
子对象受制于其父对象的转换。这意味着当Clock改变位置时,Face也会改变位置。就好像他们是一个单一的实体。旋转和缩放也是如此。您可以使用它来创建复杂的对象层次结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值