简单Unity引擎入门教程: 无代码制作第一个游戏
前言
我很小就了解到一个概念,叫做边学边玩。虽然可能是针对幼儿园小朋友的教育方针,但是我认为对于我们成年人也同样适用。如果你不爱上一件事,你永远不能学会一件事,除非你有就业压力。
那么本篇文章将尽量在不磨灭你的热情的情况下,引导你如何玩明白Unity引擎,制作一个简单的小游戏。并以此了解Unity在宏观上是如何运行的。
p.s. 本教程包含交互解释,悬停鼠标可以显示一些高亮关键词的进一步解释,推荐使用pc浏览器以达到最佳体验
第一步:下载Unity
不同Unity版本的选择
选择合适的引擎版本是非常必要的一件事,不同版本的Unity引擎可能有不一样的支持功能,不一样的界面,不一样的教程数量。
不过事实上,作为初学者,你无需过于顾虑这些,一般就算相差两三个大版本的Unity引擎,也只是在高级功能上做出调整,对于初学学习的部分基本通用。同时Unity为了考虑项目的版本升级,一般会保留旧特性持续几个版本,只是在使用时会提示过时,实际基本仍然能运行。
版本命名规则
Unity的版本较为清晰,接下来我们来看一下一个Unity版本的命名规则:
2022.3.62f1
其中2022为大版本编号,一般一年左右轮换一次,而2022是Unity在2022年左右推出的Unity版本。其中.3.62则是小版本编号,代表保证整体特性确定的情况下,修复问题和优化的小版本。f1后缀则代表长期支持版本,为了照顾使用特定版本Unity制作的游戏,一个长期支持版本会在后续多年内,在保持功能不变的情况下持续修复问题和优化,如2022.3.62f1是Unity在2025年5月7日推出的。
如下是Unity主要大版本的更新时间,目前(2025年)我推荐使用2022或2023,教程多,也不是特别老。
| Unity 大版本编号 | 发布时间 |
|---|---|
| 6000 | 2024年 |
| 2017-2023 | 2017年到2023年,版本编号与年份相同 |
| 1-5 | 2015年及更早,过于久远,一般不使用 |
p.s. 中国地区的用户一般会碰见版本号结尾如为f1c1的版本,意思同样是长期支持版本,但是为中国特供版。此版本基本和非c1版一样,但有少数插件会出现不适配的情况,在条件允许的情况下,我们都推荐使用非c1的国际版进行开发。
Unity下载
Unity的下载一般依赖UnityHub,作为多个Unity版本和Unity项目的管理器,同样分为中国版和国际版,推荐在unity.com下载国际版
在UnityHub一般只能下载到一个大版本最新的LTS版本,如果有老项目需要下载旧版本,以下是Unity国际版的版本存档:
https://unity.com/releases/editor/archive
p.s. 在中国访问Unity官网,如果不使用VPN等技术,unity.com的地址会自动重定向到unity.cn
Unity下载选项
你在下载一个Unity版本的时候,可能会出现多个可选择下载的Unity组件,可以全都不下载。所有组件都可以随时被增量安装。
大部分组件用于项目的构建,比如想要构建安卓手机的安装包则需要选择Android Build Support
其中的简体中文语言包可选安装,可以设置编辑器语言为中文
Unity许可证
Unity是一个商用的收费软件,不过对于初学者和小型工作室,Unity也同样提供免费的试用版本。
https://unity.com/cn/products/unity-personal
你可以在以上链接注册Unity账号和申请个人许可证,一般个人许可证的有效期会比较短,通过登录UnityHub自动续期,长期不登陆需要手动续期。
免费的个人许可证的软件功能与收费的专业/企业许可证只在几个方面有区别:
- 一些老旧的Unity版本的最新更新仅供企业级许可证使用
- 在打包的版本中,免费许可证强制保留游戏开始前的Unity的标志(Unity 6 之后个人版也可以移除Unity标志),而专业/企业许可证则可以删除
- 免费许可证编辑器制作的游戏仍然可商用,但仅适用于年收入小于20万美金的组织的小规模商用,超过则需升级为专业版或企业版
第二步:新建一个文件夹
神说,要有新项目
那么到现在,你的电脑上应该已经安装好了Unity和UnityHub,并且已经成功申请了许可证。
总之,尝试新建并打开一个3D项目吧!在成功或者失败之后再继续看下文…
在经历漫长的等待之后,你应该看到了Unity的主界面打开了,对吗?
现在让我们检查一下你新建的项目是否是一个相对健康的项目,同时也是如果无法打开项目的错误排查:
- Unity编辑器的版本是你预期的版本,如
2022.3.62f1 - 项目位于一个你找得到的文件夹内,而非一个随机的默认地址
- 取消使用Unity自带的云托管和版本管理
- 他确实是一个3D项目,你使用了Unity的3D项目模版,你应该会在场景里看到一个相机,一个蓝色的天空球,和一个平行光光源
Unity的窗口
你现在看到的界面实际上是由Unity的各种窗口组成的,Unity编辑器的基础元素就是各种窗口,跟大部分工具软件的逻辑相似。
打开和关闭窗口以及窗口布局
每个窗口都可以自由拖动和组合,可以在这里保存当前的布局或恢复特定布局:
另外在同一个界面,所有Unity中的窗口都可以被打开,如不小心关闭了可以在此处打开:
常用窗口的中英文名和简单介绍
| 窗口英文名 | 窗口中文名 | 窗口介绍 |
|---|---|---|
| Scene | 场景 | 相当于游戏的后台,有一个自由的,独立于游戏的摄像机可以在任意角度观察当前游戏的状态。有各种手柄可以调整游戏中物品的位置大小等参数。左键单击可以选中视野中的物体。右键长按可以旋转视角,长按右键的同时按WASD等按键可以移动。 |
| Game | 游戏 | 在游戏运行的时候会自动切换到这个标签页,相当于游戏打包后玩家实际上能看到的画面。可以进行实际的互动,如键盘鼠标输入。 |
| Hierarchy | 层级 | 展示了一个场景的物体层级结构。Unity的游戏对象存储结构是树形结构,每一个非根对象都有一个父物体,而他们的位置,旋转,缩放是层层叠加的。 |
| Project | 项目 | 可以理解是一个文件管理器,其中有你整个项目的所有资源。包括了代码,插件,美术资源,配置文件,场景,预制体等等。Unity对于资源的项目结构并没有要求(除了特殊文件夹如Resources等会特殊处理),分类文件夹只是方便管理。 |
| Console | 控制台 | 显示游戏在运行的时候通过Debug.Log()等方法输出的调试信息(除了包含实际输出的消息,还包含堆栈信息)以及引擎捕获的报错信息。并不是交互式的控制台,不能输入信息。 |
| Inspector | 检查器 | 显示一个对象或文件的详细信息。在Hierarchy或Project中选中一个对象或文件的时候,显示当前选中对象的详细信息,可以在其中设置参数。在这个面板的右上角有一个小锁,点击可以锁定当前编辑的对象,当选中其他对象的时候不会改变目标编辑对象。 |
p.s. 本表格的链接指向Unity的2022.3版本的官方英文文档。
第三步:制作你的游戏!
震撼人心的时候到了,你现在应该已经了解了基础的Unity操作了,让我们来做一个游戏吧!
新建游戏对象:一个球和一块平面的故事
故事要有主角,今天我们要讲一个跟球和平面有关的故事
在监视器里右键,就可以找到很多预制的新物体选项:
点击球体和平面,这样我们就拥有了他们,记得按ctrl+s保存场景。
使用手柄(或是在检查器中修改位置属性)将他们拖动到合适的位置,小球位于平面的正上方,并悬空一定距离,并通过旋转和移动架设好摄像机
打开游戏视图,我们应该能同时看到两个物体
此时,点击运行游戏
不出意外的话,他们应该一动不动。这是因为如果我们检查这两个物体的属性,他们此时只有显示物体的功能和一个碰撞体的功能,并没有其他任何功能。
现在,停止播放游戏,让我们进入下一环节,组件。
Unity的组件
Unity的游戏对象是N个组件的集合。可以简单理解为一个组件对应着物体的一种行为。
比如我们刚才新建的球体拥有以下几个组件:
| 组件名称 | 组件行为 |
|---|---|
| Transform | 每个Unity游戏对象都必须拥有的组件,存储了对象的父子结构和变换。 |
| Mesh Filter | 存储了这个对象的3D网格数据(3D模型)。 |
| Mesh Renderer | 将这个对象实际显示出来。 |
| Sphere Collider | 这个物体的碰撞体积。 |
你可以删除任意一个组件,观察物体的变化。
比如删除Mesh Renderer,球体会直接从画面消失,但在场景视图中依然能看到代表碰撞体积的绿色线框。
同理,如果我们创建一个新对象,为其添加Mesh Filter,Mesh Renderer,Sphere Collider并调整参数,选择Unity自带的球体网格作为Mesh,这个对象就跟刚才新建的球体一模一样了。
现在,我们为这个球体增加一个Rigidbody组件。在物体下方的Add Component按钮中搜索Rigidbody,并选择Rigidbody组件以添加。
再次运行游戏,你会看到小球从原来的高度掉下来了!因为我们给他添加了Rigidbody组件,这个组件的功能是计算并模拟刚体的物理运动。
现在到了娱乐时间,尝试为物体添加各种Unity自带的组件,看看会发生什么好玩的事吧!点击组件右上角的问号能直接跳转到官方文档,了解组件的详细信息。
编写你自己的组件
现在,我们来尝试自己定义物体的行为。别担心,我会为你提供所需的代码。
在项目窗口中右键,新建一个C#脚本。
命名出现的文件为MyComponent。
双击打开,将如下代码块复制进这个文件,覆盖掉原本的所有东西。
1 | // 引用命名空间 |
选中球体后拖动这个文件到检查器的空白处:
随后,你就会看到我们刚才添加的组件被附加到了球体上:
此时再运行游戏,观察发现:
运行游戏后,原本空白的参数rb自动获取到了现有的刚体组件。
按下空格,球体会向上跳一下。
如果确实是这样,恭喜你,你完成了你人生中第一个使用Unity制作的游戏!
打包,给你的朋友玩
现在这个游戏还只能在你的编辑器中运行,你当然不希望玩家在玩你的游戏的时候需要下载一个大型编辑器,甚至能随意修改你的游戏内容。现在,让我们来打包这个游戏,让他变成一个能独立运行的程序!
点击Build Settings来打开构建窗口:
点击Add Open Scenes按钮来添加当前场景到需要构建的场景中
选择你想要构建的平台,我这里示范使用Windows。
点击Build,选择位置,新建一个空文件夹来构建你的项目。
接着,等进度条跑完,你会看到你选择的文件夹中出现了很多文件,运行其中.exe结尾的程序,我们就以单独的程序打开了刚才我们制作的游戏!
(当然我们没有制作关闭游戏的功能,请按alt+f4关闭游戏)
你可以打包整个文件夹,发送给你的好朋友,看看在他们电脑上,游戏能否顺利运行。
结语
我当然知道说这是游戏,实在是过于牵强了,但是它有画面,有互动,又为何不是一个游戏呢?
希望本篇文章能作为你入门Unity的敲门砖,现在让我们来简单复习一下今天学到的知识:
- 下载Unity:你成功将Unity的开发环境部署到了你的电脑里
- 新建Unity项目:你成功新建了一个Unity项目,并了解了Unity的常用窗口的功能
- 制作了一个游戏:你使用Unity自带的组件和自己编写的组件,让游戏的画面动了起来
- 导出游戏:你将游戏成功打包,并且能顺利在非开发环境运行你的游戏
而任何Unity游戏的制作过程都包含这些步骤,无非就是我们今天的游戏中只有几个对象,几个组件,几种行为,而真正的游戏可能有成百上千个组件,行为和游戏对象。
最后,从宏观上来讲,制作一个Unity游戏,就是让有N个组件驱动,有M种行为的K个物体根据玩家的输入有组织的运动起来。 这个概念至关重要,理解它对于后续的Unity学习会有很大的帮助。