【超详细保姆级】从零开始你的第一个 Unity 项目

·  阅读 5098

一、前言

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情Unity3D 是一款优秀的 3D 游戏引擎,可以开发各种各样的游戏,比如多人在线角色角色扮演游戏、赛车游戏、动作竞技游戏以及射击游戏等等。在移动平台,Unity3D 的地位更是举足轻重,目前大多数手机游戏都是 Unity3D 开发的。让我们一起踏上学习 Unity3D 的征途吧!本文将介绍相关软件下载和安装以及 Unity 的基础入门知识,带大家领略 3D 世界的美丽与神奇!

二、下载安装

2.1 Visual Studio 2022

image.png

移步至微软官网下载 Visual Studio Community 2022(社区版本)

image.png

勾选相关 Unity 开发的组件应用。如果忘记勾选或者需要从事其他方向开发,可以在 Visual Studio Installer 中再次勾选安装,添加环境和组件,记得别放在 C 盘,不然容易 “”,盘大的当我没说哈【doge】

image.png

Visual Studio Installer 中还支持卸载和修复功能:

image.png

2.2 Unity Hub

image.png

如果你完成了上一步的安装,那么你的桌面上一定有一个 Unity Hub 软件图标。你一定有所疑问,我要用的开发工具是 Unity3D ,为何要下载这个呢?

  • Unity Hub 是一个致力于简化工作流的桌面端应用程序,是一个集社区、项目管理、学习资源、安装于一体的工作平台
  • 它提供了一个用于管理 Unity 项目、简化下载、查找,卸载以及安装管理多个 Unity 版本的工具

image.png

👆 可能是你打开 Hub 后的安装版本界面,如果是建议你升级到最新版本:

image.png

注意: 下载 Unity 之前请先注册 Unity ID,相当于 Unity 开发者账户,方便项目协同和同步。同时,也为了获取免费的个人使用许可证。

2.2.1 Unity ID 注册

注册传送门

  1. 点击右上角用户图标,开始创建 Unity ID

image.png

  1. 根据系统提示,完成账号创建

image.png

2.2.2 获取免费的个人版许可证

  1. 使用刚创建好的 Unity ID 登录到 Unity Hub 中,点击用户头像旁的下拉按钮打开,进入管理许可证设置界面

image.png

  1. 选择添加许可证,同意协议后即可获得免费的个人许可证

image.png

注意到期时间,届时重新获取就好了

image.png

2.3 Unity 2019.4.36f1c1 (64-bit)

image.png

完成以上安装后终于可以开始安装 Unity 了,吗?

别急还有几项设置你需要更改:

2.3.1 打开偏好设置

image.png

2.3.2 更改新建项目存放位置

image.png

2.3.3 更改安装位置和下载位置

建议不要装到 C 盘

image.png

2.3.4 开始安装

  1. 可以直接通过 Unity Hub 选择所需版本进行安装

image.png

image.png

  1. 如果没有所需的版本可以从官网下载安装

初学时推荐 2019 长期支持版本 Unity官方下载_Unity最新版_从Unity Hub下载安装 | Unity中国官网,后续可根据个人学习和开发需要再安装其他指定版本。

image.png

  1. 选择从 Hub 下载,随后就会打开 Unity Hub 进行下载,等待安装完成即可

三、创建你的第一个项目

通过在 Unity Hub 中“项目 -> 新项目”来创建你的第一 Unity 3D 项目:

image.png

填写好新项目的项目名称Project Name)和路径Location)后记得取消版本管理和托管到云端,否则可能会遇到网络不可抗力因素,导致打开项目等待时间过长。

点击创建项目(Create project)按钮后进入 Unity 3D 的主界面。

3.1 初识主界面

image.png

主界面由场景面板属性面板层次面板项目面板这四个面板组成:

  • 场景面板:Unity 3D 中最常用的部分,场景中所有的模型、光源、摄像机、材质、音效等都显示在此面板上。在面板中可以编辑游戏对象,包括旋转、移动和缩放等。
  • 属性面板:显示当前选择对象的各种属性,包括对象的名称、标签、位置坐标、旋转角度、缩放和挂载组件等。
  • 层次面板:显示场景中的所有物体。
  • 项目面板:列出所有游戏资源。

3.2 四点循环移动

工欲善其事,必先利其器。让我们试着完成一个正方体四点循环移动的游戏,把它当作安装完软件后的一个小小测试吧!

3.2.1 完成步骤

完成这个游戏,有三个步骤:

  1. 在场景中创建一个 Plane 平面和 Cube 立方体。
  2. 编写可以使立方体循环四点移动的脚本代码。
  3. 测试并开始游戏。

3.2.2 创建物体

image.png

先后点击菜单栏中的 GameObject -> 3D Object -> PlaneGameObject -> 3D Object -> Cube 来创建平面立方体。完成后,层次面板和场景面板都会显示刚刚创建的物体。

3.2.3 物体调整

image.png

功能从左到右依次为选择Q)、调整位置W)、旋转E)、缩放R)和矩形工具T)。

通过菜单栏的这几个按钮调整平面的缩放大小和立方体的位置旋转尺寸

3.2.4 添加材质

image.png

以上是添加材质的两种方法,效果:

image.png

3.2.5 视图对齐

image.png

如果快捷键无效,注意可能是按键冲突了,请通过点击按钮的形式完成视图对齐:

image.png

3.2.6 编写游戏脚本

在项目面板中,找到 Assets 目录并在该目录下建立 Scripts 目录,然后在新建的目录中选择 Create -> C# Script,创建一个名为 MoveLogic 的脚本。

之后双击它,便可以在 VS2022 中编写程序了。

image.png

自动生成的代码介绍:

  • 它继承自 MonoBehaviour 类,只有继承自 MonoBehaviour 类的脚本才能够被附加到游戏物体上,成为组件。
  • 它自带 Start() 方法,当物体被创建时调用。
  • 它自带 Update() 方法,游戏过程中,Update() 方法会被重复调用,每帧调用一次。
this.transform.Translate(0, 0, 1.0f); // this 指代的是当前挂载脚本组件的游戏物体对象
复制代码

Transform 是物体的变换组件,它决定了物体在场景中的位置、旋转和缩放。

其中 transform.Translate(x, y, z) 可以使物体沿着某一方向移动一定的距离。

要让当前物体每一帧向正前方移动 1 米的距离,可以添加代码 this.transform.Translate(0, 0, 1.0f);

test.gif

你会发现,物体不是匀速运动,速度非常快,那有什么方法可以解决这个问题吗?

答案是有的,只需在该方向的运动速度上乘上一个从上一帧到当前帧的秒间隔,就是这一帧运动的距离了。

// Time.deltaTime 从上一帧到当前帧的秒间隔
this.transform.Translate(0, 0, 1 * Time.deltaTime);
复制代码

test.gif

Z 方向位置每一帧都在累加变化。

test.gif

了解了这些基础语法和概念之后,让我们逐一来实现立方体在平面上的四点循环移动吧!

定义成员变量,来控制立方体的转弯循环移动:

    float xSpeed = 0;
    float ySpeed = 0;
    float zSpeed = 1;
复制代码

立方体初始时保证立方体向正前方移动。

    // Update is called once per frame
    void Update()
    {
        // 每次调用更新方法,物体开始移动
        this.transform.Translate(xSpeed * Time.deltaTime, ySpeed, zSpeed * Time.deltaTime);
        if (this.transform.position.z > 10)
        {
            // 向右移动(X 轴正方向移动)
            xSpeed = 1;
            zSpeed = 0;
        }
        if (this.transform.position.x > 10)
        {
            // 向下移动(Z 轴负方向移动)
            xSpeed = 0;
            zSpeed = -1;
        }
        if (this.transform.position.z < 0)
        {
            // 向左移动(X 轴负方向移动)
            xSpeed = -1;
            zSpeed = 0;
        }
        if (this.transform.position.x < 0)
        {
            // 向前移动(Z 轴正方向移动)
            xSpeed = 0;
            zSpeed = 1;
            // 重置为初始位置坐标,开始下一圈循环移动
            this.transform.position = new Vector3(0, 1, 1);
        }
    }
复制代码

当立方体移动到一定的位置,需要往左右去移动,Z 方向速度置为 0 ,反之往前后方向移动,X 方向速度置为 0

注意 XZ 轴有正方向负方向之分。

3.2.7 游戏效果展示

test.gif

四、结尾

撰文不易,欢迎大家点赞、评论,你的关注、点赞是我坚持的不懈动力,感谢大家能够看到这里!Peace & Love。

五、Unity 学习资源

Unity 官方手册是最权威规范的学习资源,提供了各个功能介绍,并且在脚本 API 中提供了所有脚本语言中功能的使用方法,并对不同版本进行了区分介绍,目前已有 中文文档 供大家参考学习。

收藏成功!
已添加到「」, 点击更改