Unity基础系列(一)——创建一个时钟(GameObjects与Scripts)

点击蓝字关注我们吧!

目录

1 创建一个时钟

1.1 创建一个Game Object

1.2 创建钟盘

1.3 创建时钟的其他部分

1.4 创建指针

2 让时钟动起来

2 定义组件类型

2.1 定义组件类型

2.2 拿到指针

2.3 设置3个指针

2.4 掌握时间

2.5 旋转指针

2.6 让指针动起来

2.7 连续旋转

3 总结

本文要点:

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

2、用C#实现。

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

4、驱动指针运动

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

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

(是时候创建这个时钟了)

1 创建一个时钟

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

(默认的窗口布局)

不过我更喜欢Unity自带的一种预设布局, 2 by 3。2代表的是场景窗口和实际游戏窗口,而3代表的是Unity的层次列表、工程列表以及属性的显示面板,就如下图显示的一样。

(预设的 2-by-3 布局)

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

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

小提问:为什么我的Game窗口会有一些黑色的边距呢?

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

(Low resolution aspect ratios 被禁用了)

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。

(场景里添加了Clock对象)

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

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

(clock选中的时候,Inspector上的信息)

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

小提问:如果是一个2D的游戏对象应该怎么办?

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

1.2 创建钟盘

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

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

(一个圆柱体的游戏对象)

这个新的对象比刚才的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,这样我们就得到了一个很大的钟盘了。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值