第四章 Unity工程和相机介绍

这篇具有很好参考价值的文章主要介绍了第四章 Unity工程和相机介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在上面的章节中,我们创建了一个“New Unity Project”工程,并保存到了“E:\workspace”工作空间下。那么,我就先看看这个工程的文件结构(E:\workspace\ New Unity Project)。

第四章 Unity工程和相机介绍

接下来,我们简单介绍一下这些目录:

Assets:资源目录,我们所有的模型,材质,代码都在这里。

Library:库目录,Unity把Asset下支持的资源导入成自身识别的格式,以及编译代码成为DLL文件都放在Library文件夹中,还包括我们使用的Packages插件库。

Logs:日志目录,保存工程中输入的log信息。

Packages:包目录,使用的一些插件,通常我们使用Package Manager窗口进行管理。

ProjectSettings:工程设置目录,当前工程下的各项设置参数记录。

Temp:临时目录,unity编译的时候自动生成的临时文件。

UserSettings:用户设置目录,记录用户的使用偏好等等。

在我们Unity主界面上的Project工程面板中有Assets和Packages,其实就是对应了上面的两个同名的目录。我们在Project工程面板中操作Assets和在Windows目录中操作Assets文件夹的效果是一样的。但是,仍然建议大家还是在Project工程面板中操作,尽量不要去Windows目录中操作Assets文件夹。因为Unity会自动为每一个资源文件创建一个同名的meta文件,大家去Windows目录下查看,就能发现这些meta文件。需要注意的是,在这个Assets目录下,Unity会忽略一些特殊的文件或文件夹。这些文件或文件夹不会纳入到Unity的管理范围之内(不会为其创建meta文件)。这些文件包括:

1. 隐藏的文件夹

2. 以“.”开头的文件和文件夹

3. 以“~”结尾的文件和文件夹

4. 名为 cvs 的文件和文件夹

5. 扩展名为 .tmp 的文件

接下来是Packages目录,建议在Package Manager窗口中管理。注意,Packages的目录只保存了插件库的配置信息。那么这些插件库的真实文件在哪里呢?就是存放到了 Library目录下。这个Library目录是Unity根据Packages中的配置信息自动管理的。我们可以删除(不要在打开Unity的情况下删除),删除后Unity会自动重新下载。我们可以在 Packages 文件夹中找到名为 manifest.json 的项目清单文件,该文件使用 JSON(JavaScript 对象表示法)语法。Unity 加载项目时,Unity Package Manager 会读取项目清单,以便计算要获取并加载的包的列表。当用户通过 Package Manager 窗口安装或卸载包时,Package Manager 会将这些更改存储在项目清单文件中。项目清单文件通过依赖关系对象来管理包的列表。

另外,Unity中有一些特殊文件夹名称,大家也需要了解一下。通常可为创建的文件夹选择任何名称来组织 Unity 项目。但是,Unity 为特殊目的保留了一些文件夹名称。

1. Editor文件夹,编辑器脚本在开发期间向 Unity 添加功能,但在运行时在构建中不可用。

2. Gizmos 文件夹允许将图形添加到场景视图,以帮助我们更好的识别游戏对象。

3. Resources文件夹可从脚本中加载资源,而不必手动将资源拖拽在场景中创建游戏对象。

4. Standard Assets官方标准资源文件夹,里面提供了很多的免费3D资源。

5. StreamingAssets流媒体资源文件夹也用于加载一些资源。

接下来,我们介绍2D游戏和3D游戏。

我们创建游戏项目工程的时候,可以指定是以2D游戏还是3D游戏。如下所示

第四章 Unity工程和相机介绍

3D 游戏通常使用三维模型作为游戏对象,并在游戏对象的表面上渲染材质和纹理,使它们看起来比较贴近现实世界的事物。同时,摄像机可以在场景中自由移动和旋转,当游戏对象靠近摄像机时,对象在屏幕上显得较大,反之就较小,这就是透视效果。这类摄像机也称之为透视摄像机。3D游戏世界对应的是XYZ三维坐标系。

2D 游戏使用平面图形(就是图片),也称之为spirit精灵。这些二维图形被绘制到屏幕上,就连动画也是通过绘制一系列的连续帧图片的方式来实现的。同时,摄像机没有透视效果,也就是说,所有的二维图形不会因为距离摄像机的远近而变大变小,我们称之为正交摄像机。2D游戏世界对应的XY二维坐标系。

还有一类游戏,他们使用三维模型来构建游戏世界,但是透视摄像机只能在X/Y两个维度上移动,并且不能旋转,类似于2D游戏的玩法。对于这些游戏,3D 效果的用途只是为了营造逼真的游戏世界,这种类型的游戏有时也被称为“2.5D”。当然,我们也可以在2D游戏中使用透视摄像机,让二维图形可以展现3D的效果。优秀的技术只会让游戏更加的精彩。也就是说,从技术角度出发,不存在严格意义上的2D游戏和3D游戏的区分。

那么,我们开始创建工程的时候,为什么还要区分2D和3D呢?其实,只是两种Unity工作模式而已。我们创建2D工程,就是2D模式,同理3D工程就是3D模式。但而后也可以随时在2D模式和3D模式之间切换。请注意,这里的模式跟我们通常所说的2D/3D游戏是两个概念。Unity中的2D/3D模式是为了帮助我们更加方便的开发2D/3D游戏,它体现的是Unit 编辑器的一些功能设置的不同。如何在项目工程中切换2D和3D模式呢?请在菜单栏选择:Edit -> Project Settings,然后选择 Editor(编辑器) 选项,然后将 Default Behavior Mode 设置为 2D 或 3D。

第四章 Unity工程和相机介绍

注意,这个修改并不会对我们当前已存在场景造成太多的影响。也就是说,虽然我们可以将3D模式改为2D模式,但是这并不代表说,我们的3D场景游戏会变成一个2D场景游戏。2D和3D模式的区别在于Unity编辑器的一些设置不同。在2D模式下,导入的任何图像都被作为精灵处理,同时也会启用Sprite Packer等工具,Scene 视图也会设置为2D效果,摄像机为正交类型,同时不使用天空盒,环境光将使用颜色值,实时光照和烘焙会关闭等等。在3D模式下,则正好相反,图像作为贴图处理,禁用Sprite Packer等工具,Scene 视图为3D效果,摄像机为透视类型,同时启用天空盒,环境光来源于天空盒,实时光照和烘焙也会开启等等。其实,这些设置的不同,目的就是为了让我们在2D模式下更方便的开发2D游戏,3D模式下更方便的开发3D游戏。

介绍完2D/3D模式与2D/3D游戏的关系之后,我们来介绍一个正交/透视摄像机。在我们的DirectX课程中讲过,摄像机本质就是取景变换矩阵和投影变换矩阵。取景变换矩阵就是摄像机的位置和观察点信息,而投影变换矩阵则分为正交和透视两种。透视投影就是一个正四棱锥,它由视域角度,远近裁剪面构成;而正交投影则是一个立方体,它有长和宽两参数构成。在Unity中,它给专门给我们提供了摄像机这个游戏对象。它可以通过菜单栏GameObject -> Camera方式来创建,一般情况下,一个场景需要一个摄像机就够了,但是有些时候可以创建多个来实现一些特殊功能。

第四章 Unity工程和相机介绍

以上是一个透视摄像机,经常用于3D游戏,是一个正四棱锥结构。

第四章 Unity工程和相机介绍

以上是一个正交摄像机,经常用于2D游戏,是一个立方体的结构。

在Scene 视图中点击选中摄像机,在Inspector检视视图中查看它的所有属性,

第四章 Unity工程和相机介绍

摄像机的Inspector检视视图中主要组件就是“Transform”和“Camera”两个。Transform组件代表了移动,旋转和缩放(世界三大变换),每一个游戏对象都拥有该组件(提醒一下)。Transform变换位置定义了摄像机位置(眼睛的位置),其向前的 (Z) 轴定义观察方向(眼睛观察方向),向上的 (Y) 轴定义摄像机的上方向(眼睛的上方向是Y轴),相当于我们之前的取景变换矩阵。如果我们需要调整摄像机的位置,或者旋转摄像机的话,我们就需要修改它的“Transform”组件。例如,我们让摄像机跟随玩家一起移动,就可以将玩家的移动同步到摄像机上。

Camera组件,根据名称可以得知,该组件是摄像机独有的组件,该组件定义了摄像机观察区域的大小和形状,相当于我们之前的投影变换矩阵。通过设置组件的各个参数,摄像机能够显示其在当前屏幕上观察到的内容。以下是Camera 组件中一些重要的参数。

1. Clear Flags(清除标记)默认天空盒,表示在屏幕上空的部分将显示天空盒。

2. Background(背景色)没有天空盒的情况下,屏幕上空的部分将显示背景色。

3. Culling Mask(剔除遮罩)默认Everything层,也就是摄像机渲染这个Layer层。我们可以点击控制栏右边的“Layers”查看Unity为我们预创建的几个Layer层。

第四章 Unity工程和相机介绍

很明显,Everything层代表了所有层的游戏对象,反之Nothing代表没有任何层。如果我们选择Nothing的话,就代表摄像机不渲染任何层的游戏对象,我们就看不见他们了。

4. Projection 代表摄像机类型,Perspective为透视摄像机,Orthographic正交摄像机。这两种摄像机的区别,我们在上面已经说明。当切换两种类型的时候,下面的一些参数会自动改变。当Perspective透视摄像机的时候,下面有“FOV Axis”,“Field of View”和“Physical Camera”三个参数;当Orthographic正交摄像机的时候,下面只有“Size”一个参数。

透视摄像机:FOV Axis代表视野轴,可以分为Horizontal水平和Vertical垂直两种,这两个选项与Field of View(视角范围)有密切关系。当选择Horizontal的时候,调整Field of View数值就是改变摄像机左右(水平方向)开合角度;当选择Vertical的时候,调整Field of View数值就是改变摄像机上下(垂直方向)开合角度。这个就类似于我们投影变换矩阵中的视域角度,只不过Unity可以让我们从水平和垂直两个轴向来改变这个角度值。Physical Camera参数我们在后面章节中再介绍,这里直接忽略掉即可。透视摄像机的结构是一个正四棱锥,我们看到的视野范围,就是由锥体的开合角度决定的。这个应该很容易理解。

正交摄像机:Size也代表摄像机的视野。它的值表示的是在屏幕的竖直方向上,摄像机所绘制出来的区域的一半。如果数值是5的话,那么正交摄像机采集区域(立方体)的高度就是10。这里的数值单位是Unity的单位哦,而不是屏幕的像素单位。当然,两者存在一个转换的问题。默认情况下,100像素等于1 Unity 单位。那我们如何来设置正交摄像机采集区域的宽度呢?这里就涉及到了屏幕分辨率自适应的问题了。Uinty通过屏幕的宽高比得到aspect,再通过纵向的采集高度乘以 aspect 获得摄像机横向的采集范围。说到这个aspect,大家要区分Game视图中的aspect,这个指最终游戏屏幕的宽高比,它主要让我们对不同屏幕进行游戏画面的测试。

5. Clipping Planes开始和停止渲染位置到摄像机的距离,分为Near和Far两个数值,其实就是我们上文提到的近裁剪面和远裁剪面,两个数值之间的内容才会被摄像机采集。

6. Viewport Rect 通过四个值指示将在屏幕上绘制此摄像机视图的位置。在DirectX课程中,我们在渲染管线章节中也提到过视口转换,就是将投影平面的内容转换到屏幕窗体上。它的主要参数就是X/Y坐标和W/H宽高。我们在该参数中也对应看到了这个四个参数值。

7. Depth(深度)摄像机在绘制顺序中的位置,具有更大值的摄像机将绘制在具有更小值的摄像机之上。默认情况下,Main Camera的Depth值是-1。新创建的摄像机的Depth值是0,只有Depth值大的摄像机的视图才会呈现到Game游戏视图中。在Unity场景中,一个摄像机对应一个游戏视图。如果场景中有多个摄像机,我们需要设置其余摄像机的输出。

8. Rendering Path定义摄像机的渲染路径,默认值为Use Graphics Settings。我们可以去在Editor -> Project Setting -> Graphics窗口可设置默认的渲染路径,

第四章 Unity工程和相机介绍

当然,每个Camera可覆盖上面默认的渲染路径。渲染路径是与光照和阴影相关的一系列操作。不同的渲染路径具有不同功能和性能特征。其中两个比较重要的选项分别是“Deferred延迟渲染”和“Forward前向渲染”。 前向渲染是内置渲染管线中的默认渲染路径。关于两者的详细区别,我们这里不介绍了,大家可以去官方或者第三方资料查阅一下。

9. Target Texture将摄像机视图输出的渲染纹理。我们可以在工程面板中创建一个“渲染器纹理”,然后再创建一个摄像机,将刚刚创建的渲染器纹理应用到新摄像机的目标纹理上。这样,摄像机采集的内容就会输出到这个纹理上面。然后我们再创建一个平面,将纹理拖拽到平面上。我们就可以在平面上看到摄像机照射的内容了。

10. Occlusion Culling为此摄像机启用遮挡剔除,意味着隐藏在其他对象后面的对象不会被渲染。这个对游戏对象的渲染起到一个优化的作用。

关于摄像机的内容,我们就暂时介绍到这里。文章来源地址https://www.toymoban.com/news/detail-425973.html

到了这里,关于第四章 Unity工程和相机介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第四十四章 Unity 滑动条 (Slider) UI

    本章节我们介绍滑动条 (Slider),它允许用户通过拖动鼠标从预定范围中选择数值。首先,我们点击菜单栏“GameObject”-“UI”-“Slider”,调整其位置,最终效果如下   我们发现滑动条 (Slider)下面有三个子游戏对象Background,Fill Area和Handle Slide Area。他们分别代表了横条背景,以

    2024年02月13日
    浏览(82)
  • 第四章 介绍Productions - 连接选项 - 使用文件适配器的业务主机类

    针对特定场景 IRIS 提供专门的业务服务类和已经使用特定适配器的业务操作类: File adapters FTP adapters HTTP and SOAP adapters TCP adapters 要使用这些业务主机,通常不需要执行任何编码。 或实际原因,以下部分可能不会涵盖 IRIS 提供的所有专业业务主机类。要查找指定适配器的所有

    2024年02月05日
    浏览(37)
  • 第四章 磁盘设备

    第四章 磁盘设备 一、 关于挂装的基本常识 •与 DOS/Windows 采用驱动器标识符(A:、B:、C:)使用磁 盘设备的方法不同。Linux 采用单根目录树管理全部文件系 统。磁盘设备必须挂载到系统目录树上才能使用。 (Linux 启动过程已完成对/、/ boot 和/swap 三个分区的挂装) •所谓挂

    2024年02月03日
    浏览(45)
  • 第四章 搜索功能

    指定返回的字段 在ES中,通过_source子句可以设定返回结果的字段。_source指向一个JSON数组,数组中的元素是希望返回的字段名称。 例如,通过source指定查询字段 结果计数 给前端传递搜索匹配结果的文档条数,即需要对搜索结果进行计数。ES提供了_count API功能,在该API中,用

    2023年04月08日
    浏览(40)
  • 第四章 Text

    在本章中,您将学习如何在页面上绘制文本。 绘图文本是 PDF 图形中最复杂的部分,但它也是帮助 PDF 击败竞争对手成为当今国际标准的原因。 当其他原始播放器将文本转换为光栅图像或矢量路径(以保持视觉完整性)时,PDF 的发明者知道用户需要可以搜索和复制的文本,而

    2024年02月06日
    浏览(46)
  • 第四章 RPC 调用

    通过以上案例我们发现,Http请求调用服务实例属实过于麻烦。其实对于请求同一个服务,很多步骤都是相同的,例如:服务名,地址,httpClient 创建步骤等。 RPC的出现,就是为了解决这一问题。 RPC: 即我们常说的远程过程调用,就是像调用本地方法一样调用远程方法,通信协

    2024年02月04日
    浏览(49)
  • 四,Eureka 第四章

           2.3.4修改主启动类 标注为Eureka客户端           springcloud-eureka-sever-7001 springcloud-eureka-sever-7001   springcloud-eureka-sever003           5.25编写PaymentMapper接口   5.    

    2024年02月15日
    浏览(82)
  • Linux第四章

    ctrl+c :强制停止(Linux某些程序的运行;命令输入错误) ctrl+d :退出或登出(退出账户的登录;或者退出某些特定程序的专属页面) history :查看历史输入过的命令(!命令前缀,自动执行上一次匹配前缀的命令,不能搜索太久的) ctrl+r :输入内容去匹配历史命令(如果搜索到的内

    2024年02月01日
    浏览(43)
  • 第四章,登录注册

    目录 4.1 添加注册页面 4.2 注册表单验证 4.3提交注册信息 4.4 完善注册功能

    2024年02月12日
    浏览(38)
  • 第四章 单例模式

    代码示例 优缺点:可能会造成内存的浪费,但也只能浪费内存 代码示例 代码示例 缺点:多线程不安全 缺点效率太低 在类加载时,静态内部类没有调用是不会进行类加载的,当被调用时才会被加载,而且只加载一次,加载时线程安全 优缺点

    2023年04月21日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包