![](https://img-blog.csdnimg.cn/76392bfef47f43059dd069cd54fd2258.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Unity笔记
文章平均质量分 83
学习Unity开发过程笔记,仅作为记录方便回顾
没有太多精力去记录所有细节
亦枫Leonlew
嵌入式开发相关工作10+年,熟悉ARM/RISC-V架构,曾在展讯、华为工作
热爱技术,喜欢分享
喜欢自驾游和户外徒步,成都的朋友可以约起来
目前方向是3D视觉
展开
-
Unity UI -- (7) 创建世界空间UI
目前为止,我们已经设计了一个屏幕空间UI(Screen Space UI)。一个屏幕空间UI会在屏幕上平坦放置,它会被渲染到环境中所有东西的上面,无论相机位置在哪里。而一个世界空间UI(World Space UI)能够在3D环境中任意移动,就像场景中的其它物体一样。原创 2023-05-23 20:38:27 · 1626 阅读 · 0 评论 -
Unity UI -- (6)增加Toggle和Slider
在前面的小节中,我们已经有了一个空的设置菜单。现在让我们来添加设置选项。原创 2023-05-22 20:38:19 · 1026 阅读 · 0 评论 -
Unity UI -- (5)增加基础按钮功能
良好的UI设计会清晰地和用户沟通。用户知道他们能和屏幕上哪些东西交互,哪些不能。如果他们进行了交互,他们也要清楚地知道交互是否成功。换句话说,UI要提供给用户很多反馈。下面是一些实例:当鼠标悬停在Google Docs里的Edit按钮时,按钮底色会加深,让其更加显目。当然在某些应用中,改变的是文字的颜色而不是背景色。一般来说,如果按钮是浅色的,则通常在悬停时会让它的颜色变深色以便对比突出。如果按钮本身是深色的,则通常会让其变成浅色。原创 2023-05-20 12:05:43 · 3198 阅读 · 0 评论 -
Unity UI -- (4)用图像创建菜单背景
设置菜单的元素会安放在一个简单的矩形区域上。我们用一个Image对象来创建这个矩形。1. 首先,我们暂时停用Title Text和Settings Button游戏物体。这样会让我们的Canvas看起来更清爽。2. 在Hierarchy中,点击右键,选择 UI > Image,将新建的Image对象名字重命名为“Settings Menu”。Image是一个非常简单的UI元素,它可以显示任意我们所导入到项目中的图片。默认情况下,它显示的是一个白色的方块。原创 2023-05-19 21:16:08 · 2508 阅读 · 0 评论 -
Unity UI -- (3)管理屏幕大小和锚点
为何我们需要锚点?现在我们已经将设置按钮放到了屏幕的某个角落了。一切看起来似乎很美好,但如果我们移动游戏视图窗口的边界,增加或减少屏幕的大小,按钮会飘到我们不想要的位置上去。如果屏幕太小,按钮会飘出屏幕外。如果屏幕太大,按钮则会靠近中心位置。Canvas的锚点系统控制着这种移动。每个Canvas上的UI元素都锚定到了其父物体上的一个特定的位置,当屏幕大小改变时它会相对于这个位置移动。锚点可视化在场景视图的工具栏中,选择Rect工具(或在场景视图中按键盘的T键),然后选择设置按钮游戏物体。原创 2023-05-18 20:54:11 · 5028 阅读 · 0 评论 -
Unity UI -- (2) 给场景加一个标题
1. Hierarchy中选中Text游戏物体,找到TextMeshPro - Text(UI)组件。我们使用这个组件来的自定义文字的外观。2. 在Text Input域段,输入一个标题名。这个标题名可以根据自己想写的任意来。如果它太长了,则文字可能会自动换行。3. 将Wrapping属性修改为Disabled,让标题显示到一行。4. 定制文字的外观和位置。原创 2023-05-17 21:06:36 · 1168 阅读 · 1 评论 -
Unity UI -- (1)概览
UI(User Interface,用户接口),是让用户和计算机或计算机应用交互的接口系统。在实时3D项目中,UI通常是由文本、按钮、复选框、滑动条和单选框等组合出来的界面。这些元素使用特定规则或通知和用户进行交互。原创 2023-05-16 21:20:55 · 736 阅读 · 0 评论 -
Unity Audio -- (5)声音的可用性考量
在某些情况下,用户可能会关闭声音或者让音量降低至很小的水平,用户本身的听力情况(用户可能有听力障碍,失聪等情况)也有差异。一个好的设计者应该要考虑到项目的可用性,音频也不例外。本节我们来看看如何能对声音做文字可视化标记(Closed Caption,闭路字幕以及一个声音方向提示箭头)以提升项目的可用性。原创 2023-05-12 20:17:18 · 720 阅读 · 0 评论 -
Unity Audio -- (4)为声音添加特殊效果
不同障碍物对声波的反射和吸收能力不同,坚硬平整表面反射声波能力强,松软多孔的表面吸收声波能力强。在坚硬的表面上,声波会被反射产生回声。场景中的洞穴是一个狭小的空间,由石头组成,因此肯定会产生回声。Unity自己并没有办法确定声音是否英爱有回声,需要我们自己去识别这些区域。Unity通过声音混响区域(audio reverb zone)来模拟回声。和Audio Source类似,混响区域有一个最小和最大距离,但它也包含了我们所需要模拟的回声类型的相关设置。在Unity中包含了几种常见的预设回声类型。原创 2023-05-11 21:35:57 · 738 阅读 · 0 评论 -
Unity Audio -- (3)创建3D音效
本节会添加场景中小瀑布的音效。小瀑布的音效会有一个作用范围,也会根据角色所处的位置不同,产生不同的效果。原创 2023-05-10 20:14:27 · 2656 阅读 · 0 评论 -
Unity Audio -- (2)创建动态音效
本节的目标是添加脚步声到角色身上,当角色走路时,触发动画事件并播放声音。脚步声是我们在真实世界中常常被我们所忽视的声音,但脚步声能够传达出许多环境信息。你现在可以花一小段时间绕着你周围的环境走一走并仔细听听脚步声。如果可能的话,在不同的表面上都行走一下,然后感受一下脚步声在不同的表面上的声音有什么不同(比如地毯和木地板上)?光脚和穿鞋时声音有什么不同?在示例场景中,我们可以看到三种不同的地面:草地、池子的水和洞穴。当玩家走过这些表面时,应该有不同的脚步声。原创 2023-05-08 20:44:11 · 3135 阅读 · 0 评论 -
Unity Audio -- (1)概览
资源包:下载,解压后用Unity Hub导入本地工程,具体方法,参考:导入并打开工程,在工程窗口中找到Scenes -> Audio_Outdoor_Scene,双击打开这个场景。原创 2023-05-05 21:06:49 · 400 阅读 · 0 评论 -
Unity 后处理(Post-Processing) -- (3)挑战:创建局部后处理Volume
在前面两节中,我们使用了一个Global Volume来应用后处理,其作用范围是整个场景。有些时候,我们需要实现当角色靠近某个地点后,进行一些特殊的后处理。这时我们就需要使用Local Volume来实现这个功能。举个例子,在某些游戏中,当角色不小心进入了毒气区域的时候,画面会变得扭曲并且整体画面会变绿。游戏用这种方式来提示玩家中毒了,需要快速跑出毒气范围。原创 2023-05-04 21:03:49 · 1561 阅读 · 0 评论 -
Unity 后处理(Post-Processing) -- (2)创建后处理配置文件
通过前面一小节,我们初步认识了后处理是什么,在Unity中简单的试了试后处理的效果。本节我们来创建一个我们自己的后处理配置文件(post-processing profile)。一个后处理配置文件包含了一系列为了达到特定视觉效果的后处理效果的配置。后处理配置文件对于项目整体的视觉风格和感觉有着非常大的影响。我们来看一个实际的例子感受一下后处理的威力。原创 2023-05-03 20:17:49 · 1955 阅读 · 0 评论 -
Unity 后处理(Post-Processing) -- (1)概览
我们都会用手机拍照,但很多时候我们拍的原始的相片都达不到我们想要的效果。比如照片可能亮度不够,颜色不饱和或者对比度不好等。对于这种情况,我们可以在照片拍出来后对其进行调整,让照片看起来更加好看,这个过程就是后处理。来看一个例子,原图如下:下面的图片是对其加了不同滤镜后的效果:在Unity中,我们也可以做类似的处理。在相机将图像渲染出来后,我们可以进行更多处理来让图像变得更好看。原创 2023-04-29 11:19:06 · 3103 阅读 · 1 评论 -
Unity Camera -- (4)探索不同类型的镜头
不同类型的镜头会呈现出不同的氛围和感觉,通常镜头的类型和相机聚焦方式和位置相关。本节我们来看看一些常见的不同类型的镜头。原创 2023-04-27 20:00:01 · 941 阅读 · 0 评论 -
Unity Camera -- (3)控制相机能看到的东西
Clipping Planes定义了相机所能看到的场景范围。在有些时候,限制相机所能看到的范围是出于风格上的考量,但编辑Clipping Planes的主要目的是为了优化性能。相机所需要渲染的东西越少,程序的负载就越低。相机的剪裁平面有两个参数值:near(近平面)和far(远平面)。near定义了离相机最近且还能被相机所渲染的平面所处位置;far则是相反的一个平面。原创 2023-04-26 21:16:26 · 2992 阅读 · 0 评论 -
Unity Camera -- (2)相机投影设置
和场景视图中的其他游戏物体一样,相机本身也可以通过使用移动和旋转工具来进行调整。但这种方式比较难用,调整起来又慢又不精确。我们可以使用Move To View功能来快速调整相机所拍摄的画面。1. 打开Camera_Projection_Scene(Scenes目录)。2. 在Hierarchy中找到PlayerArmature,然后按F键,定位到这个游戏物体。3. 旋转缩放场景视图到我们想要相机所能看到的画面。原创 2023-04-25 11:31:44 · 2290 阅读 · 1 评论 -
Unity Camera -- (1)概览
Camera章节笔记所用的资源包在这里:https://connect-prd-cdn.unity.com/20230208/a0898204-bc36-4d6e-a3b2-d4b83ae67c1d/CreativeCore_Camera_2021.3LTS.ziphttps://connect-prd-cdn.unity.com/20230208/a0898204-bc36-4d6e-a3b2-d4b83ae67c1d/CreativeCore_Camera_2021.3LTS.zip 解压原创 2023-04-21 11:05:46 · 422 阅读 · 0 评论 -
Unity VFX -- (5)VFX Graph基础
在Unity中,还有一种完全不同的创建VFX的工作流,VFX Graph。VFX Graph能够生成出和粒子系统相同或更好的效果。相比于粒子系统,VFX Graph的一个最大的好处是它能够在保持应用良好性能的情况下,模拟出多得多的粒子。对于VFX艺术家来说,他们的主要职责之一是确保他们制作的特效不会影响应用整体的可用性和帧率,因此性能优化是非常重要的。原创 2023-04-19 21:50:09 · 1928 阅读 · 0 评论 -
Unity VFX -- (4)创建burst粒子效果
如果用户成功达成某个目标,我们可以使用一个爆裂的礼花来激励用户。如果角色挥舞刀剑,我们可以做出剑气来增加气势。如果角色落到地面上,我们可以在脚部做出飞舞的灰尘来增加表现力。这些都可以视为burst粒子效果。下面是一些burst粒子效果(burst particle)的例子,由于本人未能找到合适的翻译,后面直接用burst particle英文原文写。武器射击时枪口的火花效果玩家到达终点时庆祝的闪烁的礼花效果用户挥舞武器时的光影。原创 2023-04-18 18:18:40 · 1752 阅读 · 0 评论 -
Unity VFX -- (3)创建环境粒子系统
粒子系统中最常用也最重要的一种使用场景是实现天气效果。只需要做很少修改,场景就能很快从蓝天白云变成雪花飘舞。和之前看到的粒子系统从一个源头发出粒子的情况不同,天气效果完全围绕着场景。原创 2023-04-16 11:04:08 · 1694 阅读 · 0 评论 -
Unity VFX -- (2)玩一玩粒子系统
复杂的VFX通常是由多个单独的粒子系统所组成。当它们组合到一起时,这些独立的个体会产生出更加有趣的效果。下面我们来为火焰增加火花效果。1. 在Hierarchy中,展开Fire_ParticleSystem_Prefab物体,选择VFX_Sparks子物体。2. 激活VFX_Sparks,在其Inspector面板中,勾选上最开始的复选框,然后点击Particle Effect窗口中的Restart。现在我们可以看到火焰的中心开始出现了火花。目前产生的火花效果看起来就只是加了一些飘向空中的白点。原创 2023-04-14 21:35:54 · 663 阅读 · 0 评论 -
Unity VFX -- (1)概览
视觉特效(Visual Effects,VFX)在实时3D项目中能够带来惊艳的效果,其范围很广,比如水花四溅、迷雾、火焰、爆炸效果等。如果没有VFX,整个环境会让人感到非常呆板无聊。这些特效会让环境生动起来,为场景带来生命力。原创 2023-04-13 20:36:10 · 1382 阅读 · 0 评论 -
Unity Animation -- 导入动画
尽管Unity中的动画工具已经比较强大了,但对于非常复杂的或很长的动画,通常是由外部DCC创建。特别是对于角色动画来说,需要在动画过程中进行复杂的控制。因此我们通常需要将外部制作的动画导入到Unity中。原创 2023-04-06 21:20:45 · 3051 阅读 · 0 评论 -
Unity Animation -- 使用Animator控制动画
在很多实际场景中,我们经常需要根据特定的事件(比如玩家输入,敌人受到攻击等)来播放不同的动画。这需要我们了解一下Animator,Animator Controller和基础的动画状态机。原创 2023-04-04 20:54:17 · 6303 阅读 · 0 评论 -
Unity Animation -- 改进动画效果
在上一篇笔记中(),我们制作了简单的小球弹跳的动画,但这个动画看起来很不自然,小球的弹跳看起来就像是不受重力影响的物体,没有加速度的影响。要让小球的弹跳动画看起来更自然(不使用物理引擎,只使用动画),我们需要对中间帧进行调整,在Unity中,这是通过曲线编辑器(Curve Editor)来实现的。前面笔记中所用使用的Animation编辑器的一个部分叫做Dopesheet,它主要是关键帧被设置的地方。原创 2023-04-02 21:52:19 · 2658 阅读 · 0 评论 -
Unity Animation -- Overview
动画师负责为交互体验应用实现物体的动画效果,这些游戏物体有角色、过场动画、UI panel运动效果等等。一般来说,非常复杂的物体或动画都是在DCC(Digital Content Creation)应用软件中制作的,比如Autodesk Maya、3DMax或Blender。这些DCC有非常完善稳定的动画工具套件来帮助制作者简化模型及其动画的制作过程。这些工具包括了rigs(用于角色动画的基础的类似骨骼的结构)创建、毛发运动、动作制作等功能。原创 2023-03-30 21:11:18 · 1121 阅读 · 0 评论 -
Unity Lighting -- 室内场景光照杂项
在游戏物体的Inspector中,展开Lighting选项卡,在Cast Shadows中选择 Two Sided。选择Two Sided后,游戏物体在计算阴影的时候会对Mesh的所有面都计算,这样会看起来更加真实。原创 2023-03-16 21:28:10 · 777 阅读 · 0 评论 -
Unity Lighting -- 室内场景光照和发光材质
在为室内场景做光照设计的时候,间接光照非常重要。大部分室内场景的光线会经过多次反射后才进入到了我们的眼睛(或者说是Unity的摄像机)。环境光和反射光在室内场景中为场景的真实感起到了巨大的提升作用。室内场景会对光照设计师提出一些挑战。对于只渲染正面的mesh(也被称为单面几何体,single-sided gemoetry),在做光照时会产生一些不及预期的结果,这些问题需要设计师进行追踪调整,以便达到预期结果。和真实世界的光照差不多,光源的摆放位置会极大地影响整体的光照效果和场景的氛围。原创 2023-03-14 20:42:25 · 1161 阅读 · 0 评论 -
Unity Lighting -- 使用Light Probes
Light Probes可以用来测量(meaure or probe)场景中穿过空白区域的光线信息。在运行时,场景中移动的物体所被打到的光线,通过离物体最近的Light Probe的数据来做估计。我们可以用Light Probes来让烘焙光照更加真实,并且在实际项目中,相比于real-time的光源,它们也更加高效,当然,前提是需要正确地放置Light Probes。原创 2023-03-09 21:52:10 · 946 阅读 · 0 评论 -
Unity Lighting -- 为场景烘焙lightmap
计算烘焙光照的过程涉及为整个场景生成UV坐标,这个坐标和材质里的纹理映射的UV坐标是类似的。烘焙后的纹理映射被称为光照贴图(lightmap),创建lightmap的过程被称为光照贴图映射(lightmapping)或烘焙(baking)原创 2023-03-08 21:08:49 · 2668 阅读 · 0 评论 -
Unity Lighting -- 配置阴影
本笔记使用URP管线进行说明。原创 2023-03-05 11:45:18 · 1855 阅读 · 0 评论 -
Unity Lighting -- 向场景中添加光源
本节笔记来实践向场景中添加光源。:点光源所发出的光是朝四面八方发散的,我们可以用点光源来模拟灯泡之类的发光物体。:聚光灯所发出的光是锥形的,我们可以用它来模拟手电筒,车灯,射灯等发光物体。:面灯,仅用于Light baking,我们可以用它来模拟平板LED灯板,或者灯管的照射效果。原创 2023-03-04 16:35:29 · 3826 阅读 · 1 评论 -
Unity Lighting -- 配置平行光源和天空盒
在游戏或实时应用程序中,我们可能会创建多种不同种类的场景,比如室内场景、室外场景、真实的场景或完全想象的场景。即便项目是一个完全的想象的或是科幻的故事,灯光也是非常重要的一环,它能极大提升沉浸感。在光照设计和实现中,识别出一个场景所需要的光照是关键的初始步骤::通常是日光或月光:场景中模拟特定种类的真实光源,比如路灯或车灯:场景中照明焦点物体的灯光:在Uinty中也叫漫反射环境光(diffuse enviromental light),环境光是存在于场景中但没有特定来源的光。原创 2023-03-03 21:25:15 · 2167 阅读 · 0 评论 -
Unity Lighting -- Unity的光源简介
在主菜单栏中,点击Window -> Rendering -> Light Explorer打开光源管理器,这个标签页可以看到场景中所有的光源,包括每个光源的类型,形状,模式,颜色,强度,阴影等信息。在主菜单栏中,点击Window -> Rendering -> Lighting打开窗口,这个窗口是设置场景级的灯光设置以及环境光和烘焙的灯光贴图等设置。原创 2023-02-27 21:04:52 · 1821 阅读 · 0 评论 -
Unity Lighting -- 光照入门
首先来看一张图,看看我们能在这个场景中找到几个光源。相信大家能够很容易看出来,四盏路灯模型带有四个光源,右边的红绿蓝三个发光的灯也是光源。场景中还有一个光源,这个光源来自天空,让场景看起来有点日落的效果。原创 2023-02-25 20:30:40 · 961 阅读 · 0 评论 -
Shader Graph简介
观察目前为止我们所创建的Shader的Master Stack,里面还有Metallic和Smoothness这两个值我们没有动过,我们可以尝试添加Input节点来让使用者能够调节这两个值,这个练习留给大家自己实现。重要提示:记得点击Save Asset及时保存你的进展。原创 2023-02-20 22:03:59 · 1713 阅读 · 0 评论 -
遮挡贴图(Occlusion Map)和微表面贴图(Microsurface Map)
在3D图形学中,遮挡(Occlusion)是指光被物体挡住。即便是在PBR中,环境光在某些应该被遮挡的地方,也会以古怪的方式被反射。遮挡贴图(Occlusion Map)可以让为这些地方增加阴影。绝大部分3D模型都会带Occlusion Map,使用遮挡贴图可以让物体表面看起来更加真是,也能增加Base Map和Bump Mapping无法表现出的细节阴影。原创 2023-02-16 21:12:29 · 1312 阅读 · 0 评论 -
凹凸贴图(Bump Mapping)
我们首先来看low-poly(多边形数较少)mesh和high-poly(多边形数量较多)mesh之间的不同。首先,最明显的不同就是high-poly能够表现出更多细节,但high-poly有比较大的性能开销。有没有一种比较折中的办法使得我们既能够让mesh看起来细节更加丰富,同时多边形数量尽可能少呢?这种方法就是bump mapping,使用了凹凸贴图,可以在多边形数量较少的情况下,也能表项出较多的表面细节,性能上根更具优势。在凹凸贴图中,有两种主要使用的贴图类型:法线贴图和高度贴图(视差贴图)。原创 2023-02-16 20:25:46 · 931 阅读 · 0 评论