手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(一)

简介: 手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)

b08544ef97c94ea79d58162a8505b1f1.jpg

写作背景


这篇教程是一个基础的长教程,会和大家一起创建一个简单的时钟,并且给它加上一些组件脚本用来显示当前时间。这篇教程的意义并不在于怎么学会写出一个时钟,而是教你认识 Unity 的编辑器。当然如果你之前已经接触过或者用过 Unity 了并且能自己找到场景窗口,那么就算是有个很好的开始了。


推荐大家使用 Unity2017.1 及以上的 Unity 版本进行学习,太老的版本可能会不兼容。

要点提要


1、用简单的 Objects 创建一个时钟。

2、用 C# 实现。

3、通过旋转时钟的指针来显示时间

4、驱动指针运动

image.png

是时候创建这个时钟了!

1、创建一个时钟


打开你的 Unity,并且选择创建一个 3D 的项目,这个事例不需要任何其他的插件,也不需要准备任何其他的资源就用 Unity 的默认创建就够了。创建完成之后,如果你没有对编辑器进行过自定义设置的话,你会看到如下默认窗口布局:

image.png

不过我更喜欢 Unity 自带的一种预设布局, 2 by 3:

2 代表的是场景窗口和实际游戏窗口,而 3 代表的是 Unity 的层次列表、工程列表以及属性的显示面板,就如下图显示的一样:

image.png

你可以从编辑器右上角的下拉列表里进行选取。


除此以外,我还会对编辑器的布局做进一步的定制,以便让它能更好的展示垂直化的内容。比如我把 Project 这个窗口调整为 1 列,就点击这个 Project 窗口右上角,锁的图标旁边有一个很小的下拉列表,点开就能设置。同时我也会禁用网格显示,这个按钮在 Scene 窗口的右上角,点击 Gizmos 之后会出现一个下拉菜单。

Q&A:为什么我的 Game 窗口会有一些黑色的边距呢?

这种情况一般发生在高分辨的显示器上。如果想让 Game 显示的内容铺满真个窗口的话,你可以打开设置分辨率比例的下拉框,然后禁用 Low Resolution Aspect Ratiosoption 选项。

image.png

1.1 创建一个 Game Object


默认创建的场景,包含两个 Game Object,你可以从 Hierarchy(层次)窗口看到这两个游戏对象。一个是 Main Camera, 一个是 Directional light。即一个是游戏的摄像机,一个是平行光。Main Camera 用来渲染场景,所有 Game 窗口看见的东西都是由这个摄像机绘制出来的。而 Directional light 用来给场景展示阴影。


你可以通过一些方式创建你自己的游戏对象。比如右键 Hierarchy 窗口,从打开的菜单中选择 GameObject Create Empty 选项,或者从 Unity 引擎的菜单栏 GameObject Create Empty。这样 Unity 就会帮我们在场景里加入一个空的游戏对象,新对象创建好之后,你可以立刻对它进行命名,我们把这个对象命名为 Clock。

image.png

除了刚才提到的 Project 和 Hierarchy 窗口之外,还有一个叫 Inspector 窗口,用来展示游戏对象的详细信息。当我们选中刚才添加的 clock 之后,就可以看到它包含一个带有名字的头信息和一些配置选项。默认情况下,对象是启用的,非 static 并且没有包含 tag 信息,并且属于 default 的层。这些日后对我们会很有用。


再往下的话,它会展示一系列的组件信息,但是总是会有一个 Transform 的组件,当然我们刚才创建的时钟对象也有。

image.png

Transform 组件上包含了一个游戏对象在 3D 空间里的位置、旋转和缩放。这里我们把 clock 的 position 和 rotation 设置为 0,scale 设置为 1。

Q&A:如果是一个 2D 的游戏对象应该怎么办?

如果你是在 2D 的环境下工作的话,你可以忽略掉三维中的一维,有一些 2D 的游戏对象,比如 UI 这种,它会有一个叫做 Rect Transform 的组件。它其实是一种特殊的 Transform 组件。

1.2 创建钟盘


现在我们已经有了一个 clock 的游戏对象了,但是它现在只是一个空的对象,所以场景上我们看不到任何东西。下一步我们添加一些 3D 的模型在上面,这样他们就可以被渲染出来了。Unity 其实自身包含了一些初级的物体模型,我们可以用 Unity 自带的模型来创建这个时钟。


第一步,先添加一个圆柱体到场景里吧。步骤如下:GameObject → 3D Object → Cylinder,然后将它的 Transform 上的几个数值设置的和 clock 对象一样。

image.png

这个新的对象比刚才的 clock 对象多 3 个组件:

  • Mesh Filter, 主要是引用了 Unity 内置的圆柱体网格。
  • Capsule Collider,主要是用来做 3D 的物理。
  • Mesh Renderer 这个组件是用来告诉 Unity 怎么把 Mesh Filter 画出来的。它同时包含了一个内置的 material(材质球), 材质球可以根据需要自己创建或者更换,同时材质球也在 Mesh Renderer 的组件下面被展示出来了。

虽然这个物体代表的是圆柱体,但是它却有一个胶囊体的碰撞表示,那是因为 Unity 没有内置圆柱图的碰撞。在本例子里面,我们并不需要它,所以我们可以把它移除。不过如果你想把物理加入到时钟里的话,建议使用 Mesh Collider 组件。


每个组件都可以通过它右上角的齿轮图标,点击之后弹出的下拉列表进行移除。


如果要把一个圆柱体做成一个钟盘的话,我们要把它压扁。这很简单,只需要修改 Transfrom 的 Scale 就可以了。把 Scale 的 Y 改为 0.1f,然后把 X 和 Z 的值改为 10,这样我们就得到了一个很大的钟盘了。

image.png

修改这个圆柱体的名字叫 Face,就好像它是这个大时钟的脸一样。因为它是 clock 对象的一部分,所以我们可以在 Hierarchy 窗口拖拽它到 clock 对象下面。

image.png

子物体的变换(transformation )会受父物体影响,这意味着如果 clock 变换了位置、缩放、或者旋转信息,face 都会跟着变化,就好比它们已经是一个完整的物体了。按照这个方式,我们可以在 Hierarchy 窗口完成非常多的复杂设计。


目录
相关文章
|
3月前
|
定位技术 C# 图形学
Unity和C#游戏编程入门:创建迷宫小球游戏示例
Unity和C#游戏编程入门:创建迷宫小球游戏示例
72 2
|
4月前
|
C# 图形学
Unity的几个入门小常识
Unity的几个入门小常识
|
4月前
|
人工智能 C# 图形学
Unity入门
Unity入门
|
10月前
|
前端开发 C# 图形学
unity入门必备的案例2.0
unity入门必备的案例你还不知道?
63 0
|
10月前
|
前端开发 C# 图形学
unity入门必备的案例你还不知道?
unity入门必备的案例你还不知道?
131 0
|
存储 人工智能 图形学
Unity基础到入门-导航系统(Navigation)
Unity基础到入门-导航系统(Navigation)
Unity基础到入门-导航系统(Navigation)
|
人工智能 图形学
Unity Rain Ai 插件的使用入门(三)
Unity Rain Ai 插件的使用入门
185 0
Unity Rain Ai 插件的使用入门(三)
|
人工智能 图形学
Unity Rain Ai 插件的使用入门(二)
Unity Rain Ai 插件的使用入门
93 0
Unity Rain Ai 插件的使用入门(二)
|
人工智能 图形学
Unity Rain Ai 插件的使用入门(一)
Unity Rain Ai 插件的使用入门
535 1
Unity Rain Ai 插件的使用入门(一)
|
缓存 JavaScript 前端开发
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(三)
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)
163 1
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(三)