手把手带你 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 窗口完成非常多的复杂设计。


目录
相关文章
|
缓存 JavaScript 前端开发
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(三)
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)
581 1
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(三)
|
图形学 Windows
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(二)
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)
396 0
手把手带你 Unity 入门之从零创建一个时钟(GameObjects 与 Scripts)(二)
“你那么强,能不能用Unity做时钟”,“嗨,这有啥难”
又见面了哈,今天为大家介绍时钟、钟表的实现方法教程。 实现的方法有很多,这里只是提供了一个思路,本着抛砖引玉的心态,希望能和大家共同学习。
|
图形学
Unity3D深入浅出 - 脚本开发基础(Scripts)
常用脚本事件: Update:每帧调用一次 Start:在第一次Update执行前调用 Awake:脚本实例在创建时调用 FixedUpdate:每个固定物理时间间隔调用一次 LateUpdate:每帧调用一次,在Update之后 MonoBehaviour类: MonoBehaviour类是uniyt中非常重要的类,定义了基本的脚本行为,所有脚本类均需要从它直接或间接继承。
5899 0
|
图形学 容器
使用Unity制作一个时钟
创建时钟 让我们创建一个新的工程。默认的场景中包含一个position为(0,1,-10)的相机。在相机视口中可以看到场景的一部分,选择这个相机,然后选择菜单中的 GameObject / AlignView便能获得你想看到场景中的某个部分。
2013 0
|
Android开发 图形学 C#
|
11月前
|
机器学习/深度学习 人工智能 图形学
卓伊凡的第一款独立游戏-详细介绍游戏开发引擎unity-以及详细介绍windows和mac的安装步骤【01】
卓伊凡的第一款独立游戏-详细介绍游戏开发引擎unity-以及详细介绍windows和mac的安装步骤【01】
771 9
|
11月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
1656 6
|
图形学 缓存 算法
掌握这五大绝招,让您的Unity游戏瞬间加载完毕,从此告别漫长等待,大幅提升玩家首次体验的满意度与留存率!
【8月更文挑战第31天】游戏的加载时间是影响玩家初次体验的关键因素,特别是在移动设备上。本文介绍了几种常见的Unity游戏加载优化方法,包括资源的预加载与异步加载、使用AssetBundles管理动态资源、纹理和模型优化、合理利用缓存系统以及脚本优化。通过具体示例代码展示了如何实现异步加载场景,并提出了针对不同资源的优化策略。综合运用这些技术可以显著缩短加载时间,提升玩家满意度。
1985 6

热门文章

最新文章