入门概述 什么是 Unity unity 最简单的一种解释方式就是:一款跨平台的游戏引擎 游戏引擎 最简单的说法就是:帮我们集成游戏开发所需的大部分功能,在它的基础上,添加和制作游戏视觉、音
入门概述什么是 Unityunity 最简单的一种解释方式就是:一款跨平台的游戏引擎 Unity引擎基础认知
编辑器核心操作
Unity 编辑器项目模式分类
工程文件一个完整的 Unity 项目包含以下文件
注意:这些文件中,Assets、Packages、ProjectSettings三个文件夹是必须的,不能删除,其他文件可以由 Unity自动生成。 新增工程后打开工程文件夹,会发现 Scenes 文件夹下有两个文件: SampleScene.unity Unity引擎的场景文件,以.unity为扩展名 编辑器主窗口Hierarchy 窗口简介 一个游戏包含多个场景(关卡),一个场景包含多个 GameObject(游戏对象) 层级窗口展示Scene(场景)中所有的 GameObject(游戏对象)。这个 GameObject 可以显示出来是一个模型,也可以是一个UI元素,也可以是一个空物体 内容介绍
Inspector 窗口简介 Inspector窗口类似属性窗口,可以修改、设置选中物体、资源的各种属性(把 C# 脚本添加到 Componemt 里面去,脚本可以读写这些属性,脚本就是这样去实现游戏逻辑的) 使用方式
上图红框位置中有一个复选框,指示了这个物体是否是激活状态。
active状态右侧的输入框就是GameObject的名称,也是Hierarchy中显示的名字。修改名称可以直接在这个输入框中修改,然后按回车确认。或者直接在Hierarchy中物体上右键菜单Rename或按F2(Windows)重命名。
Tag 即标签,你可以给一个物体添加标签用于区分不同的物体,比如用朋友和敌人来区分不同的角色。
Layer在很多时候(摄像机、物理检测)时非常有用。 注意: 碰撞层和显示层
物体之间的碰撞关系(是否碰撞)
物体之间的覆盖关系(谁在谁上层) 碰撞层矩阵矩阵上的是否勾选代表两物体之间是否可以碰撞 Scene 和 GameObject 的理解Scene一个游戏包含一个或多个Scene。
GameObject场景中所有的物体都是一个GameObject,例如场景里的角色、房子、石头、灯光、相机、特效等。 但其实,一个GameObject只凭自身什么事情都做不了,它只是个容器 如果你想给GameObject添加属性,让它变成灯光、或者树、或者相机,你需要给它添加Component(组件) 。你可以给一个GameObject添加一个或多个的Component,来让它拥有不同的外观和功能。 Unity 有许多内置组件(如 Box Collider、Capsule Collider),能大大加快你的开发效率,我们还可以使用C# 脚本自定义组件 Empty GameObject 的妙用
你可以把空物体当作其他物体的父物体,这就类似一个文件夹,把其他物体放了进去。这样更方便编辑管理(通过父物体整体移动、旋转、隐藏/显示等),Hierarchy的结构也更清晰。
很多组件并没有对应的模型、界面或者特效,强加给任何一个都不合理。这时候使用一个空物体作为组件的容器更合适,比如游戏中全局使用的脚本。
有的模型的轴心点位置可能离模型本身很远或没有放在合适的位置。这会造成物体的位置、旋转与物体本身不符。例如一个轴心有问题的模型,可能出现以下问题:
Component(组件)什么是 Component(组件不同的 Component 为 GameObject 提供不同的功能 怎么添加组件如果想要给一个GameObject添加功能,就需要给它添加组件。添加组件有两种方式:手动添加和通过代码添加。 添加组件有多种方式:
修改组件属性就是修改游戏逻辑
在 Unity 中可以直接修改属性,这是游戏测试人员干的事,通过手动修改属性后可以直接体验游戏,可以通过测试得出组件各种属性的最佳值
通过 C# 脚本读其他组件后,读写组件的属性,这是游戏研发人员干的事,这样可以根据不同情况去设置组件的属性值,完成游戏逻辑 Transform组件Transform是每个GameObject必须有的组件,创建GameObject就会自动附带,而且不能删除,在Inspector中显示在最上面 它的功能是确定一个GameObject在空间中的位置、缩放和旋转
这三个值都是相对于父物体的值,如果没有父物体,就是世界空间(即相对于世界坐标原点)的值 图片的使用游戏开发中许多地方都会用到图片(又叫贴图、纹理)资源,比如模型的贴图、UI界面图片、粒子特效的图片等等。 图片要求
一般建议使用png格式。
导入设置设置并不会改变图片源文件,只是Unity引擎在使用这个图片时,会使用设置后的图片数据。 1. Texture Type贴图有多种用途,在导入的时候也需要进行不同的设置。
2. Texture Shape
3. sRGB(Color Texture)默认选中。选中此选项可以让贴图的颜色存储在伽马空间中。非HDR颜色的纹理应该选中此属性(如反射和高光贴图)。如果贴图存储了特定含义的信息,并且在shader中需要使用对应值(例如平滑度或金属度)则不要选中此属性。 4. Alpha Source设置alpha通道的生成方式,默认是 Input Texture Alpha
5. Alpha is Transparency默认选中。 6. Advanced(高级设置)6.1 Non Power of 2(非2的N次幂) 上文中介绍了贴图尺寸是2的n次幂会对提高性能,在可能的情况下应该尽可能使用2的n次幂大小。但是有些情况可能需要用到非2的n次幂的情况,就需要设置这个属性。这个属性的默认值是To nearest。 6.2 Read/Write Enabled 默认禁用。 6.3 Gnerate Mip Maps Mipmap是一组逐渐缩小的图片,用于提高3D实时渲染的性能。远离相机的物体会使用更小尺寸的贴图。使用Mipmap会提高33%的内存占用,但是不用mipmap会导致更大的性能损失。对于游戏内的贴图,基本上都应该使用mipmap,例外的情况有:UI图片、天空盒、光标、Cookie贴图。Mipmap也可以避免很多种贴图失真和闪烁的情况。 6.4 mipmap预览 贴图的preview窗口中,可以通过右上角的滚动条查看mipmap不同级别的情况。 6.5.Wrap Mode 默认值是Clamp。这个属性设置贴图在平铺时的不同形式。 6.5.1 Repeat平铺时自身重复。 6.5.2 Clamp贴图的边缘会被拉伸。 6.5.3 Mirror 贴图在重复时会呈现镜像的效果。 6.5.4 Mirror Once只镜像一次,然后边缘拉伸。 6.5.5 Per-axis每个轴上可以单独设置平铺的模式。
6.6 Filter Mode 默认是bilinear。选择纹理在被3D变换拉伸时如何被过滤。 6.7Aniso Level 以陡峭的角度查看纹理时提高纹理质量。对于地板和地面纹理来说,使用这个参数很有用,但是相应的也会占用显卡的资源。 7. 压缩设置压缩设置中,可以设置一个整体的参数,也可以对不同平台进行单独设置。 7.1Max Size 设置贴图的最大尺寸 7.2 Resize Algorithm 缩放算法 7.3 Compression 压缩的质量设置。压缩质量越高,图片的保真度越高,导入Unity编辑器时所花的时间越多。 7.4 Format 在Default中,Unity会根据你选择的压缩质量,自动选择Format。 7.5 Use Crunch Compress 这是一种有损的压缩格式。这种算法能最大程度降低贴图占用的空间。Crunch Textures可能需要很长时间才能进行压缩,但运行时的解压缩速度非常快。 8. Label设置Project中可以通过label搜索资源,一个资源可以设置多个label。 渲染与贴图渲染在Unity中渲染一个物体,最重要的三个概念是材质(Material),贴图(Texture),着色器(Shader)。 这三者之间的关系是:
对于大多数的写实渲染需求(角色、场景、环境等),使用内置的Standard着色器通常是最好的选择。 Texture(贴图)通常情况下,物体的Mesh网格只给出了物体的大概形状,大部分细节都由贴图提供。贴图是绘制在物体网格表面的图像。你可以把贴图想象成有弹性的壁纸,这个壁纸可以通过拉伸、压缩贴到网格的表面。通常贴图的定位(UV信息)是通过3D建模软件完成的。
一张贴图要想贴到模型上,必须先将贴图赋予一个材质,然后将材质与模型关联。
其他用途的贴图,在讲Unity内置的Standard Shader时会讲解。
2D游戏中,贴图需要设置为Sprite。在场景中绘制时类似一个纸片的形式,没有厚度。
使用Unity内置的GUI系统时,用到的图片需要设置为Sprite。
网格非常适合表示实体物体,但对于魔法遗留的火焰,烟雾和火花等效果并不适合。粒子系统可以更好地处理这种特效。粒子一般用来表示很小的东西,比如液体或气体。当大量粒子一起运动时,可以产生非常逼真的效果。例如,可以将火焰贴图的粒子从中心点以极快的速度发射出去来模拟爆炸;可以用大量高速向下运动的水珠来模拟瀑布。 材质什么是材质材质是连接贴图、着色器和模型的重要资源 创建材质在Project窗口任一文件夹或空白处右键,Create > Material可以创建一个新的材质。新创建的材质默认会被设置为Standard着色器,所有贴图属性为空,如下图所示:
材质创建后,可以在Project窗口中选中,在Inspector中修改其所有属性。将材质拖拽到场景或Hierarchy中的任一物体即可将材质赋予对应的物体。 编辑材质编辑材质的第一步是确定要使用的着色器,可以点击材质的Shader下拉菜单选择着色器 。 选中的着色器决定了材质包含的可配置的属性。
• 点击材质属性的小圆点,可以从列表中选择贴图
|
2022-04-23
2023-04-23
2024-04-08
2024-11-15
2022-10-16