1、Unity

Unity

Unity是一套具有完善体系与编辑器的跨平台游戏开发工具,也可以称之为游戏引擎。

游戏引擎是指一些编写好的可重复利用的代码与开发游戏所用的各功能编辑器。

Unity目前已超过50%的游戏引擎市场占有率。

image-20240912104152220

Unity引擎优势

  1. 基于C#编程,拥有易上手、高安全性的特性。
  2. 独特的面向组件游戏开发思想让游戏开发更加简单易复用
  3. 拥有十分成熟的所见即所得开发编辑器
  4. 拥有良好生态圈,商城中包含大量成熟的功能脚本与资源
  5. 强大的跨平台特性,可以制作PC、主机、手机、AR、VR等多平台游戏

下载与安装

官网:https://unity.com/cn

下载Unity Hub,注册Unity账号

image-20240911090829043

然后安装编辑器,推荐安装LTS长期支持版,这里选择2022.3.42f1c1

Mac环境安装

因为Visual Studio for Mac在2024年8月31日停用,所以我们将主要介绍Visual Stuiod Code的使用。

微软在2023年8月4日发布了Unity for Visual Stuio Code扩展,代替了以前的Debugger for Unity扩展。

.NET环境与VSCode插件安装

.NET环境安装:https://dotnet.microsoft.com/en-us/download

VSCode扩展安装:Unity

image-20240911160803581

升级Visual Studio Editor

将Unity项目的脚本编辑器设置为VSCode

image-20240911161439675

在Unity中双击脚本,就可以打开Visual Studio Code,点击F5就可以构建项目了。

在第一次构建时,会有如下提示

image-20240911161733040

新建项目

编辑器安装完成之后,就可以开始创建项目了,点击(项目 - 新项目)

image-20240911092801078

项目模板

image-20240911092906013

项目模板是基于不同类型项目的共同最佳实践而提供预选的设置。这些设置针对Unity支持的所有平台上的2D和3D项目进行了优化。

项目模板的区别

渲染管线 适用的项目模板
内置渲染管线(Built-in Render Pipeline):默认渲染管线,适用于原型设计或者对画质要求不高的游戏,适用于低端设备。 2D(Built-in Render Pipeline)、3D(Built-in Render Pipeline)、2DMobile, 3D Mobile
通用渲染管线(URP):对平台支持广泛,在性能上也有较好表现,适合移动端、桌面端、网页端游戏。 Universal 2D、Universal 3D
高清渲染管线(HDRP):适合大型3A游戏,对画面有高清渲染需求,适合桌面游戏和主机游戏项目。 High Definition 3D

项目结构

image-20240912162603185

编辑器窗口布局

image-20240911113003009

编辑器操作

3D视图操作

按住鼠标中键:平移视图

按住右键:围绕视图中心点旋转

按住右键可以使用(W、S、D、A、Q、E)来移动视图

**注意:**Unity创建物体的时候默认会生成在视图的中心点,而不是世界原点,可以选中物体后使用快捷键F来将视图中心点移动到物体

物体操作

image-20240911144639547

移动、旋转、缩放等功能,可以使用(Q、W、E、R)等快捷键,操作模式如下

image-20240911144749046

透视和正交

透视图下,物体近大远小。正交视图下,物体的显示与距离无关,可以通过右上角坐标下面的Persp(透视)和ISO(正交)进行切换

image-20240911145039898

其他操作

复制:(Ctrl + D)

删除:(Delete、Ctrl + back)

聚焦:选中物体按(F)

基本概念

场景(Scene)

一个场景可以理解为一个环境,由许多的物体搭建而成,Unity将这些物体称游戏对象GameObject。

游戏对象(GameObject)

游戏对象是Unity中的基本实体,可以是图片、文本、三维物体等。是一种容器,可以挂载组件,游戏对象至少要有Mesh Filter(网格组件)和Mesh Renderer(渲染组件)才能渲染,即在编辑面板、游戏面板中看到。

组件(Component)

在Unity中,游戏物体是不具备任何功能的,如果想要为其添加功能,那么就需要为它添加该功能的组件,而每一个组件其实就是一个引擎内部的组件脚本或是由自己编写的组件脚本。也就是说,一个游戏物体( Game Object)会包含多个组件( Component ),每一个组件又是一个组件脚本。

image-20240912161657775

例如这个Cube物体,实际上就是(空物体 + Mesh Filter网格组件 + Mesh Renderer渲染组件 + Box Collider碰撞器组件)构成的。

脚本(Script)

脚本也是一种组件,用来定义逻辑的代码文件,通常使用C#编写,并附加到游戏对象上以控制其行为。

预制体/预制件(Prefab)

一个可重复使用的游戏对象模板,允许在项目中创建、配置和存储游戏对象的副本。直接从Hierarchy面板中拖动到资源面板即可形成预制体。

材质(Material)

定义了游戏对象表面的外观和光照效果,常与纹理(Texture)结合使用,纹理就是附加到物体表面的贴图。

动画(Animation)

用于控制游戏对象的运动和变换,包括动画和场景中的其他动画效果。

物理(Physics)

涉及到碰撞、重力和其他物理行为,使游戏对象具有真实的物理特性。