版本:Unity 6 (6000.0)
语言:英语
3D 游戏开发快速入门指南
高级最佳实践指南

创建 3D 游戏

要创建一个 3D 游戏,设置您的 Unity 项目,然后按以下顺序熟悉相关概念。

基础知识

游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、相机、航点等。游戏对象的功用由附加在其上的组件定义。 更多信息
查看 术语表
是 Unity 中的基本对象,代表角色、道具、场景等。游戏中的每个对象都是一个游戏对象。

游戏对象存在于称为 场景场景包含游戏环境和菜单。将每个独特的场景文件视为一个独特关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是分段设计和构建您的游戏。 更多信息
查看 术语表
的 3D 环境中。您可以将场景视为一个游戏关卡,但它也可能代表一个菜单,游戏结束时的字幕或其他完全不同的内容。

游戏对象的特性由称为组件的功用块来定义。您可以将多个组件附加到游戏对象。以下组件是 3D 游戏的基础。

  • 变换变换组件变换组件决定场景中每个对象的 位置、旋转和缩放。每个游戏对象都具有一个变换。 更多信息
    查看 术语表
    决定场景中每个游戏对象的 位置、旋转和缩放。每个游戏对象都具有一个变换组件。
  • 网格过滤器一个网格组件,它从您的资源中获取网格并将其传递给网格渲染器,以便在屏幕上渲染。 更多信息
    查看 术语表
    :此组件定义 3D 游戏对象的形状。
  • 网格渲染器一个网格组件,它从网格过滤器获取几何体并将其在对象变换组件定义的位置进行渲染。 更多信息
    查看 术语表
    :此组件定义由 网格Unity 的主要图形原语。网格构成您的 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms、细分曲面必须转换为多边形。 更多信息
    查看 术语表
    过滤器定义的 3D 形状的外观。
  • 相机一个组件,它创建场景中特定视点的图像。输出要么绘制到屏幕,要么捕获为纹理。 更多信息
    查看 术语表
    :专门配置的游戏对象,用于捕获和显示玩家的世界。
  • 刚体一个组件,允许游戏对象受到模拟重力和其它力的影响。 更多信息
    查看 术语表
    :刚体允许游戏对象与物理系统交互,包括重力和 碰撞当物理引擎检测到两个游戏对象的碰撞器发生接触或重叠时,就会发生碰撞,前提是至少其中一个游戏对象具有刚体组件并且正在移动。 更多信息
    查看 术语表
    。请查看本指南的 物理 部分。
  • 碰撞器一个用于处理对象物理碰撞的不可见形状。碰撞器不需要与对象的网格完全相同形状 - 大致近似通常更有效率,并且在游戏玩法中无法区分。 更多信息
    查看 术语表
    :此组件定义 3D 游戏对象用于物理碰撞的形状。

返回顶部

脚本

Unity 允许您使用 脚本一段代码,允许您创建自己的组件、触发游戏事件、随着时间的推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
查看 术语表
创建您自己的组件。脚本让您可以触发游戏事件、随着时间的推移修改组件属性并响应用户输入。Unity 本地支持 C# 编程语言。以下是一些您可以在游戏中使用脚本的示例。

  • 接收来自玩家的输入,并让游戏对象根据该输入移动或动作。
  • 设置获胜和失败状态,这些状态会打开相关的获胜或失败场景,以创建一个完整的游戏循环。
  • 根据其他变量影响游戏对象的组件,例如它们的变换、动画或渲染器。

有关如何在 Unity 中使用脚本的详细信息,请参阅 脚本概述。要学习脚本的基础知识,请参加 Unity Learn 初学者脚本课程。有关更深入的指导,请参阅示例项目 用代码创作创建者工具包:初学者代码

返回顶部

3D 资源

模型是对象的 3D 表示。3D 游戏的大部分视觉效果都由模型组成,例如角色、可交互对象和玩家周围的世界。

您可以使用诸如 Probuilder 之类的工具在 Unity 中创建模型。但是,这些工具最适合原型设计,而不是最终产品。

要将更精致的 3D 资源添加到您的最终产品中,请在 3D 建模软件中创建 3D 模型、材质和纹理,然后将其导入 Unity。

Left: A 3D polygon mesh for a player character. Right: The player mesh rendered in Unity with materials
左:玩家角色的 3D 多边形网格。右:在 Unity 中用材质渲染的玩家网格。

导入 3D 模型文件

Unity 使用 .fbx 模型格式。您也可以使用其他常见的本机 模型格式(例如 .max、.blend、.mb、.ma),Unity 会在导入后将其转换为 .fbx。

导入模型 到 Unity 中,以便在您的项目中使用。

渲染网格

3D 网格是 3D 模型的结构构建。它由多个多边形形状组成。要将 3D 模型添加到游戏对象,请向游戏对象添加一个 网格过滤器网格渲染器 组件在您的场景中渲染网格;要确保模型出现在您的游戏中,请向具有网格过滤器组件的任何游戏对象添加一个网格渲染器。

材质

材质一个定义如何渲染表面的资源。 更多信息
查看 术语表
结合有关表面视觉外观的信息,例如 纹理在渲染游戏对象、精灵或 UI 元素时使用的图像。纹理通常应用于网格表面以赋予其视觉细节。 更多信息
查看 术语表
、颜色色调和 着色器在 GPU 上运行的程序。 更多信息
查看 术语表
。使用材质定义如何渲染表面。

  • 纹理是您导入到 Unity 中的任何 2D 图像文件。使用 纹理 来包裹网格并为模型添加精细细节。
  • 使用颜色色调来更改纹理的颜色。
  • 着色器是一系列指令,它们决定 Unity 如何在屏幕上显示游戏对象。使用 着色器 来影响 Unity 如何根据光照输入和材质配置渲染每个 像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素照明是在每个屏幕像素处计算的。 更多信息
    查看 术语表

请参阅有关 材质设计 的 Learn 教程。

返回顶部

构建游戏内环境

An environment has been created by adding models and other assets to the scene.
通过向场景添加模型和其他资源,已经创建了一个环境。

环境设计是为游戏玩法创建环境的过程。您可以在 Unity 编辑器中同时设计和构建您的环境,也可以在 Unity 之外设计环境,然后在 Unity 中构建它。

要构建游戏内环境,您需要向场景添加游戏对象,并将它们放置到适合您的偏好和设计的 位置。除了手动将模型放置到场景中,Unity 编辑器还包含一组内置的 地形场景中的地貌。地形游戏对象向您的场景添加一个大的平面,您可以使用地形的检查器窗口来创建详细的地貌。 更多信息
查看 术语表
功能,允许您向游戏添加地貌。在编辑器中,您可以创建多个地形图块,调整地貌的高度或外观,并向其添加树木或草地。阅读有关 创建和使用地形 的更多信息。

返回顶部

动画

您可以导入在其他程序中制作的动画,也可以直接在编辑器中为资源制作动画。有关 3D 动画的更多信息,请参阅 Unity Learn 课程 3D 动画系统简介

The player is standing still so the idle animation is playing.
玩家站着不动,因此正在播放空闲动画。

导入动画

当您导入具有动画的模型时,Unity 可以 导入动画剪辑。这意味着您可以在另一个程序中为模型制作动画,然后在 Unity 中访问和操作剪辑。

在 Unity 中为模型制作动画

使用动画窗口在 Unity 中直接创建和修改动画片段。使用关键帧标记动画过渡开始或结束点的帧。关键帧之间的帧称为中间帧。
请参阅词汇表
动画为场景中的游戏对象添加简单的动画,例如更改其位置、大小或旋转。

控制动画

要控制播放哪些动画片段可用于动画角色或简单动画的动画数据。它是一个简单的“单元”运动片段,例如(一个特定实例)“闲置”、“行走”或“奔跑”。更多信息
请参阅词汇表
,您可以在脚本中使用Animator类直接调用它们,或者在动画控制器通过动画层、动画状态机和动画混合树来控制动画,由动画参数控制。同一个动画控制器可以被具有动画组件的多个模型引用。更多信息
请参阅词汇表
中创建和修改它们,该控制器位于动画窗口可视化和编辑动画控制器的窗口。更多信息
请参阅词汇表
中。

您可以使用动画窗口

返回顶部

图形

光照

为您的场景添加光照,为您的环境添加深度和氛围,并帮助玩家体验您创建的游戏世界。要设置光照

  1. 创建一个灯光。在层次结构窗口中右键单击以打开游戏对象菜单,选择 **灯光**,然后选择要添加到场景的灯光类型。请参阅灯光类型.
  2. 将灯光放置在场景中。调整灯光的颜色、强度和位置,直到获得所需的效果。请参阅使用灯光.
  3. 完善您的光照。例如,您可以选择不同的灯光模式灯光属性,定义灯光的用途。可以设置为实时、烘焙和混合。更多信息
    请参阅词汇表
    ,或者添加cookie蒙版以创建阴影。
A Spot Light creates atmospheric lighting in this scene
聚光灯为该场景创建了大气光照

请参阅 Unity Learn 的URP 中的光照教程。

返回顶部

音频

您可以在 Unity 中为您的游戏添加背景音乐和音效;请参阅音频概述。使用第三方软件创建您的音频并使用推荐的设置将其导入 Unity。

返回顶部

物理

The Player character has a capsule collider component which uses the Physics system to allow the character to collide with the walls.
玩家角色具有一个胶囊碰撞器组件,它使用物理系统允许角色与墙壁碰撞。

使用 Unity 的物理引擎模拟物理系统方面的系统,以便物体可以正确加速并受到碰撞、重力和其它力的影响。更多信息
请参阅词汇表
来控制游戏对象如何交互。您可以使用它来复制诸如重力和力学之类的力,这些力定义了游戏对象在现实世界中如何碰撞时的行为。您还可以配置物理设置以创建自定义物理来适应游戏的设计,这可能不是对现实世界的准确模拟。要了解如何使用 Unity 的物理引擎,请参阅 Unity Learn 教程Ruby's Adventure: 2D Beginner。有关更多信息,请参阅用户手册的物理部分

要为您的游戏对象设置物理

  1. 要使您的游戏对象受到物理系统的影響,并对重力和碰撞等事物做出反应,请添加一个刚体组件。
  2. 使用碰撞器使游戏对象能够与场景中的其它游戏对象交互。例如,具有碰撞器 的游戏对象可以移动或被另一个具有碰撞器的游戏对象移动。
  3. 为了能够在两个游戏对象相交时在代码中调用函数,请添加一个碰撞器并将其设置为触发器

返回顶部

用户界面

如果您想为您的游戏添加菜单或帮助,您需要设置一个用户界面。要设置用户界面,请使用Unity UI

返回顶部

3D 游戏开发快速入门指南
高级最佳实践指南