粉丝838获赞4007

说到游戏开发,我们就不得不提到游戏引擎。游戏引擎作为存在游戏的火星组件,大大降低了游戏开发的门槛。 unity、 unreal 自然是当下最火的两大游戏引擎,其他的还包括不少私有专用轻量级的游戏引擎。最近完全开源商人免费了个 dog 也大获了一把。 今天我们的主题是 unit, 也是我比较推荐新手去学习使用的。首先它的界面简单直观,学习曲线也比较频繁,除了可以用作游戏开发,还可以胜任各种可视化类型的应用,包括仿真动画、 a 二 v 二等等。 安装 unity 的一种常见方式首先就下载一个 unity hub, hub 是一个用来管理不同 unity 版本的工具,通常不同的项目会用到不同版本的 unity 引擎。使用 hub 来自动化安装和管理可以帮我们介绍 时间。我们打开 hop, 首先切换到这里来安装选项卡,点击上面的添加按钮来安装一个 unit 版本。我们可以选择最新的版本,或者选择 lts 来安装一个长期支持版本, lts 通常会更稳定一些。 如果我们不打算去手动配置 ide 的话,这里我们可以直接安装 visual studio。 如果你想将项目部署到 angelate、 ios 这些平台上面运行,可以勾选这里的选项。最下面是可选的本地文档和中域元包。点击下一步, unity help 会在后台自动下载安装,这里需要等上一段时间。 安装完毕之后,我们回到工程选项卡,点击右上方的按钮创建一个新项目。左边可以根据需要选择不同的模板,就是我们选择默认的三位即可。最后修改一下这里的工程名,然后点击下方的创建按钮,数字化工程 需要等上一段时间。随后我们来到 unit 的主界面,这个界面也被叫做编辑器 editor。 首先,中间的这个区域选出了我们的三维场景。和一般的题目软件一样,我们可以点击鼠标选择场景中的物体。 拖拽鼠标可以同时选中多个物体。发动鼠标滚轮可以对画面进行缩放。按住 alt 并拖拽,鼠标会沿着中心点旋转。 同时在最左边的面板中以树形结构列出了场景中的所有物体。如这里可以看到场景中仅有的两个对象,摄像机和平行光源。同时我们也可以直接在左边的列表中进行物体选择。 当物体被选中时,最右边的面板中会显示这个物体的所有属性。这里的内容直接取决于你选中的物体。最下方的面板中显示了工程中的所有文件,目前我们的项目空空如也,里面只有 一个场景文件,也就是我们这里看到的空白场景。最后,屏幕上方的三角形按钮允许我们在编辑器中运行测试游戏快捷键是 control 加 p, 再次点击它会停止游戏。以上便是 unit 主界面的基本介绍, 接下来我们讲一下场景中三维物体的创建。我们可以在左侧面板中点右键,菜单中可以看到不同的类别,比如三维物体特效、光源、音频、视频等等。 在成为物体的紫菜蛋中,我们可以找到各种基本的体和形状,比如立方体、球体、圆珠体、平面等等。下面还可以找到诸如文字、地形这些复杂的物体, 这里我们先创建一个球体来做示范。讲到这里,我们就不得不提到 unity 中两个相当重要的概念。我们在场景中看到的所有物体,在 unity 中都被叫 叫做游戏对象 game object。 比如这里的球体是一个游戏对象场景中的功能性物体,比如摄像机、光源也是游戏对象。而每个游戏对象由不同的组件 component 构成。 在右边的面板中可以看到这个球体由 transform, miss, filter, collider 等等构成,每个组件会提供不同的功能, 比如 transform 定义了我们物体在场景中的位置,而 mesh renderer 就用它的名字,是用来确认三维物体的。如果我们禁用掉这里的 mesh renderer, 可以看到这个物体在窗口中就直接消失了。 总而言之,一个场景可以包含各种不同的游戏对象,而每一个游戏对象有不同功能的组建构成。除了可以选像球体这样基本的结合形状,我们也可以从外部导入各种三维模式文件,比如从三维建模软件中导出成 f b x 格式,直接拖拽到 unit 中使用。另外,像 sketch, fab, turbos、 greet 这些网站上也可以找到许多免费高质量的三维模型。不过大家在使用的时候需要留意一下版权许可。 在 unit 商店中也可以找到官方提供的各种工程模板,里面包含了不仅有模型场景找本,还有可以直接拖拽使用的预设,他们同时也是非常不错的学习资源。 我们回到主题,先来讲一下最最基本的 transform 图件。首先我们可以在这里直接输入物体的三维坐标,沿着 x y z 轴的旋转角还有 x y z 方向上的缩放。我们也可以直接在场景中拖动这一箭头来修改。 左上角的这些按钮允许我们切换不同的工具。快捷键是 q, w, e, r, 他们分别用来对物体的位置旋转和缩放进行调整。 因为在左侧的面板中,我们可以将一个游戏对象拖拽成另一个游戏对象的自己脸,这样所有的自己脸会随着父亲一同移动、旋转和缩放。比如这里身体的运动会同时带动手臂的移动。 接着我们来看一下之前提到的另一个组件, mesh renderer, 我们知道它是用来渲染 several 提到或者更专业的术语叫 mesh 三角网。 mesh renderer 中有一个非常重要的属性, material 材质。 材质直接决定物体表面的外观,与他相关的设置也直接显示在面板的最下方。这里的材质由于是 u 立体默认创建的,我们无法直接修改。 不过我们可以在下方的工程窗口中点右键创建一个新材质并拖拽到物体上来使用。这里我们可以修改材质的颜色或者指定一张纹理贴图,并且我们可以 数字材质的金属属性,光泽度,发型贴图,高度贴图等等。另外,这里的下拉框允许我们切换不同的 shira 程序。 shira 是运行在 gpu 上的代码,里面包含物体表面的光照和颜色。计算 最基本最常用的 shader 自然是这里默认的标准光照模型。不过我们也可以选择其他的 shader 程序,比如 unit shader 不会参与光照计算,因此不会产生阴影。我们也给自己选一个 shader, 或者安装第三方插件,比如使用卡通画确认的 shader 程序来实现各种不同的视觉效果。 如果我们想给游戏对象添加其他的组件加入更多的功能,我们可以点击这里的添加组件按钮,里面分类列出了所有支持的组件。比如我们可以添加一个叫做 rigid body 钢铁的组件,让游戏对象参与物理引 群的计算,这样物体会受到重力下降,碰撞到其他物体反弹的呢?在菜单中,我们还可以找到各种其他的主角,我们可以用 animator 来控制管理角色的动画 order source, 给游戏对象添加声音, 使用 canvas 来绘制二维用户界面,使用 particle system 来产生粒子效果等等等等。 说完了三维物体的创建,我们来讲一下场景中的另一个基本要素,摄像机。摄像机展示了游戏中玩家的视角,一个场景中如果没有摄像机,自然不会显示任何内容。 我们除了可以用之前的方法修改摄像机的位置旋转角之外,还可以修改摄像机清除背景实用的颜色,摄像机的投影类型,视角大小等等。同时我们也可以通过给摄像机添加 post process layer 组件,配合场景中的 post process volumes 来给镜头添加后期处理的特效。比如这里我们要打环境广州照,近身还有光源的效果。 讲到这里,我们的场景都还是完全静态的,如果我们想给游戏加入动态的逻辑,比如响应玩家的按键操作。实验游戏的基本玩法。编程自然是必不可少的步骤。 在 unit 中,我们可以通过 c c f 脚本或者也叫 monoscript 来进行编程。我们可以选中一个游戏对象,点击添加组件, 然后输入名字来快速创建一个脚本。当然,我们也可以在工程窗口中点右键创建一 csr 脚本,然后再将脚本拖拽到游戏对象上。创建脚本的名字可以在 a, d, e 中打开并编辑它。可以看到脚本都继承于 model。 behavior 里面定义了两个非常重要的函数, update 函数,每一针都 会被调去,我们可以在这里实现基本的游戏逻辑。 start 函数只会在最开始的时候给调用一次,通常被用作初始化操作。这里我们可以在 start 中调用 debug 点 log 输出一段调试信息。 debug 类定义了与调试相关的各种工具函数。 运行游戏,我们可以看到下方控制台输出的文本就印证了我们的代码被成功执行。我们现在实现一个基本的怪物移动逻辑, 这里我们都要用 input 点 get key 去判断在这一阵中键盘上的 w 键是否被按下。如果是我们给怪物施加一个向前的作用力,这里我们会用到之前提到的 rigid body 触键。 我们可以在 start 函数中获取这个组件并存放在 r b 变量中。然后我们再用它的 at force 函数来添加一个作用力,这个作用力的方向是物 体面朝的方向,乘以这里定的一个参数加速度之后,我们可以在测试中微调这个参数。 同样的,当一键被按下时,我们的 transform 的 rotate 函数让物体沿着 y 轴逆时针旋转, 旋转的角度等于这里定义的旋转速度乘上时间。关于时间的计算,我们都要用 time 点掉的 time 破取上一针与这一针的时间差。注意,这里的时间差并不是一个长量。由于各种因素的影响,我们的游戏并不总是运行在同一帧率上。 最后,我们要同样的方法是先向右旋转的逻辑运行程序可以看到这样的效果。 另外,我们可以将之前定义的这两个参数设置成 public, 这样我们可以在编辑器中实时修改他们对跳餐非常方便。当我们完成了游戏的开发,打算将游戏 打包并分享给其他的人,我们可以点文件构建设置快捷键是 control shift 加 b。 在窗口上方,我们可以指定游戏中需要打包的所有场景。位于列表最上面的是进入游戏后加载的第一个场景。 在下方我们可以切换目标平台。你可以选择 pc max 上运行的独立版本,移动端的 ios 版本或者 ps xbox 之类的主机游戏版的前提需要安装必要的平台开发包。最后点击下方的构建按钮即可。

耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶耶 啊。 嗯。

大家好,我是鸡哥,今天给大家演示一下如何下载安装 unit。 unit 是目前流行的游戏开发引擎,百度 unit 第一个就是 unit 的中国官网,点进去后点击右上角下载 unit 下拉到下面,先下载用力体号,这个是管理用力体版本的工具。呃,这里选择 windows 下载,然后创建一个用力体 id, 建议用手机号直接注册,因为选油箱最终还是要用手机号注册的。呃,登录好后可以直接下载用力体号, 下载好后直接安装,可以安装到指定的位置,安装好后运行 unit 哈。五会弹框出现安装 unit, 这个是推荐的稳定版本 location, 选择想安装的路径,直接安装即可啊。注意这里我是第二次安装,如果第一次 安装,弹出选择证书,选择 poss 呢?即可。 usb 下载,安装好后选择 pjx 项目六、 prjx 新建项目,选择三 d 类型的模板,然后项目名改为认识一下 项目位置都可以选择保存的位置。呃,取消勾选版本控制,进入 unit 后,点击上方的 windows, 选择揭露了,再选择 console。 呃,将空投台拖到场景旁边,用于展示调试的信息。我们在资源目录下新建 screeba 的脚本文件夹,在 scree 文件夹里面新建太折了。 c 下部脚本, 然后切换胜似场景,点击上方 gameobject, 选择三 dobjects 中的 qq, 用于后续学习。四、下部的演示。呃,然后将 taste 脚本拖动到 qq 中,可以看到这个 qq 下面 挂载了这个脚本,然后打开太子脚本,选择 vis studio 二零一七呃,没有的可以自行安装,这里没有代码提示,先关掉 visit studio, 继续点击上方的艾迪特,选择 purpose, 选择 eternal tours。 这里第一个脚本编辑器。 嗯,选择 vid studio 二零一七,点击与 january project fails 啊,这时候重新打开 vis studio, 点击上方的工具获取工具和功能啊,下拉找到使用 unit 游戏开发,勾上之后下载安装即可。然后再重新打开太子脚本。这时候就有代码提示了 啊,在 os 大的中简单输入一句啊,第八个点 book。 嗯,哈喽鸡哥,然后运行看效果。嗯,可以看到输入栏里面显示了哈喽鸡哥。好了,这期就到这里,我们下期再见。拜拜。

啊,接下来呢,我们把这个灯光我们给它渲染一下。呃,前面讲了三种灯光,我们看一下在灯光里面有定向, 点光源啊,定向就是太阳,对吧?点光源和聚光灯,我们这这三种都用到啊,还有一个聚光,这个聚光是做什么用呢?哎,正好我们在这边也可以用到啊,我们这个房子如果说掉个顶的话啊,那么这个里面的灯带就可以用这个,呃,叫 区域光来做啊,那么这个房子好像呃 隔层的不太适合吊顶,我们在这边吊个顶吧,我们在这个呃窗帘这边啊,就是这边应该有窗帘是吧?在窗帘这边我们吊个顶,阳台这边。好吧,我们把这块啊, 把这块复制出来, ctrl d 一下,然后我们旋转一下,按住 ctrl 键。 好,我们在这里吊个顶啊,吊个顶,那然后这这个里面呢,我们就放一个区域光,放个区域光 差不多嘛,高度低一点点啊,这样子好,区域光我们建一个游戏对象灯光,区域光啊,那么区域光是这样子的哎,他有个方向,大家可以看一下啊,他拿过来 啊,通过这个四个点是可以直接调节,我们把方向转一下,把它转到对着上面打啊,这个灯带肯定是对着这个顶上打的, 把它放到这个位置啊,一定要 不能嵌在模型里面啊? 然后至于他能够打多少,那么这个还要试那个最后那个渲染的这个效果来定。那我们现在先这样,先这样啊,看一下 这边可以嵌进去一点。好 弄完了啊,弄完了,然后我们就可以渲染了。那渲染怎么渲染呢?怎么烘焙呢?呃,其实呢它这个渲染啊,并不是像我们这个三 t max 渲染一样,就是它是, 呃,他不是那种,嗯,直接宣传图片出来,他是把所有的光影啊,全都计算在这个模型的贴图上 啊,所以,呃,这个是静态,没有办法把它变成动态的效果,如果你要动态的话,那么你就像比如说人物啊这种,这种就不能够去渲染,去烘焙啊,那么就是人物本身他自己身上应该是要在做题图的时候呢,就应该自己去渲染好 啊,但是还要通过实时的灯光去打一些实时的阴影,那么人物是没有办法的啊,所以,呃我们可以用这个,嗯,静态,那么静态呢是 需要自己去设置的,哎,就是说不动的物体他都可以属于静态,比如说这个房子里面的所有的这些墙面、地面啊, 灯光是不需要去设置成静态的,那么我们就看一下有哪些模型, 这个是 不需要渲染的啊?这个灯,这些灯都不需要去渲染。我看一下啊,这个需要,这个需要渲染,那个这个是,呃他本身是不发光的,像这种呢本身要发光,所以不用渲染,那么要渲染的呢,我们把它变成静态啊,看一下像这个 聚光灯上面的模型啊,我们把它变成静态,怎么变呢?在这个地方啊,静态的,然后把这个小三角打开,你可以看到里面有光照贴图。静态,那么我们烘的烘培的就是光照贴图啊,所以我们要打开这个光照贴图。静态 好,然后在呃房子这边有所有的这些墙面啊,这些东西,那这些东西他们都是我们这个 building 的这个子物体,所以 我只要给这个 building 打开静态光照贴图静态,然后他会问你啊,是不是改变这个,哎,突然变英文版了是吧? do you want to enable 光照贴图静态 flag for all the child object as well, 就是说是否改变所有的死物体? yes, change children 就是改变子物体 啊,所以底下的这每一个东西你可以看到他这边都都有一个静态。哎,这个时候开始出现计算了啊,也就是说 光影开始效果会变好,效果开始变好了,这,这是为什么呢?因为我们现在开的是 我们现在开的实时计算啊,我们的光照贴图实时计算,那如果实时计算的话呢,也就说你每改变一下灯光他都会计算一下。 呃,看下烘焙之后的效果啊,这个灯光呢?嗯,我们调整一下吧,这个灯光都是有点在这个模型的里面了啊,有可能会被挡住,把它往外面移一下。 呃,是这样子的啊,这个有一些灯光呢,它是开始烘培了啊,但是有一些灯光它没有参与到烘培,比如说我们这个,呃,点光源啊和这个 sport light 啊,聚光灯这个都没有参加烘焙。为什么呢?因为你看它这边有一个选项是实时看见吗?实时,也就是说它 real time 就是实时的灯光,它并没有,并没有参与到这个烘培里面,只是我们的聚光灯,我们可以 选一下聚光灯,可以看到聚光灯里面里面它是混合的。混合什么意思呢?就是实时和和烘培啊,和渲染它两个都有,都有,它既可以实时的集成营,又可以烘培啊,所以我们现在这些灯光啊,我们还要调一下,还不够啊? 这个我们现在的调整调整还不够,我们还需要把这个其他几盏灯光选中, 这个叫 light mode。 好,我们刚刚没有分类,是吧?我们再建一个 light, 再建一个 light 的一个空对象啊,游戏对象创建空对象,然后这个就叫 light。 nice 好了,然后把这些灯光都放进去啊,包括把我们的平行光也放进去,好,然后所有的这些啊灯光,其他的这些灯光啊,我们都把它改成 成什么呢?改成烘培,把它改成烘培啊,我们可以一起选中,一起改啊。你看这 are read at, are read at? 他是没有选的啊,他为什么呢?因为他是没法实施计算,他就是烘培的。那么然后这个这些灯光,这些灯光我们可以把它改成 改成已烘培啊,已烘培他不需要实时,他不需要实时,实时是靠那个,呃, 靠那个聚光灯啊,不是靠那个平行光,那个太阳来计算就行了啊。所以我们看一下已烘焙好,这个时候所有的灯光都会参与烘焙,大家可以看一下这个效果,这个效果就出来了,效果就出来了 啊,可以看到每一盏灯光, 包括这个聚光灯啊,聚光灯前面只出来两盏,现在三盏聚光灯都计算这个效果了,都计算效果啊,所以效果还是可以的啊。室内呢,现在就亮了,然后我们这些灯光啊,我们的颜色也可以调整一下,也可以看这个灯带啊,灯带的效果,顺便看一下。 好,可以达到这个基本上达到这个灯带的效果啊, 那然后我们把这个所有的颜色我们调整一下,这个颜色呢,我们都把它调到暖色,室内的话调到暖色会好看一点。 好,每次调整他都会重新烘焙,那么大家可以看一下最后的效果。 好,这个是烘完了啊,烘完了。那如有同学电脑卡,我电脑非常卡,你说我调一下,他烘一下,调一下,烘一下很慢,那么用什么方法?就是说,呃,我们可以这样子,就是窗口, 然后呢?呃,渲染,然后里面有个照明设置,他会打开一个窗口啊,我们在有同学看不清的话,我再 再选一下啊窗口,然后渲染,然后照明设置是在这个位置,那他会打开一个一个渲染的设置, 然后打开之后你会发现这个底下有一个自动生成啊,这个自动生成就是他自动轰了,你调一下,他轰一下。当然如果说电脑快的同学这个就很方便,你不需要去手动的去渲染,那么这个在 最早 unit 的那个时候呢,是没有自动渲染,那么我们把这个照明这个选项我们经常要用的,我们把它放到 放到这个检查器的边上,这个我们可以切换。用的时候,那么有同学如果觉得慢,你想手动生成呢?你就把这勾去掉啊,然后当你调好灯光,然后你想轰的时候,你就 啊手动的点一下生成照明,这样也可以啊,那很多是比如说我们在啊刷地形的时候就会就会卡,是吧?然后你就要用一些这种手动生成照明的这种方法。呃, 好,那么这个其实我觉得差不多了,那么聚光灯可能还需要,还需要那个调整一下,我们把那个 sport light, sport light, 我们把它稍微调的 亮一点点,我把强度稍微调高一点啊,当然现在因为是我们选的是已烘培,所以你强度调高,对,这边是看不见的,一定要烘培好之后你才能看到这个效果。强度为什么调高?这不明显是吧?非常不明显,如果这边放一些画,那么他的这个效果不是很明显,我们把 把它调到,比如说二左右两倍的,然后再去到照明里面再去生成照明啊,因为我把自动生成关了啊,如果自动生成 cat 就自动照明,自动生成那个渲染,那么我们现在生成照明 啊,可以看到这个地方明显亮了,哎,这个就是我要的效果。哎,这不错啊。但是啊,有一些问题啊,就是这个地方有一些问题,光露出来了,是吧?光露出来了,然后看看这边啊,这边也有一些问题啊,这个是什么呢?因为他们不是一体, 你再怎么拼的仔细他这个地方总会有接缝啊。那么这个也就是说我希望大家就是真正在做的时候,真正在做的时候能够把这个,呃,模型呢,能够 做成一体的,做成一体的,但是拼是没法拼的,是吧?我们在 max 里面可以做成一体的,或者我们回头我们用那个插件,用那个插件来把它改成一体的。 好,那么再找一下问题啊,这个地方有问题,看这里穿插的看得出来,是吧?那我把这个这个杆子,我把它调的大一点, 这个之前位置都没有,对的,非常好啊,我们把它对对好,对对好好,然后其他的看一下 啊,其实就差不多了,都差不多了啊,然后有一些细节,比方说 这个灯光他明明是照亮这个周围的,对不对?但他现在呢?好像,嗯,他自己却是黑的啊?那那是因为我没有把它变成什么,没有把它变成静态,如果静态他也会被照亮, 但他应该不是被照亮,他应该是一个光源,他自身应该是亮,对不对?所以呢,我们需要就是把它另外想办法去调一个发光的材质, 发光的材质包括这个灯啊,这个灯也是调个发光的材质,那么首先我们要给他一个材质球,我们到这个 materials 里面,然后呢创建一个材质球,材质叫 light, 然后把这个 light 材质给他,然后也给他。 现在还是黑的,是吧?不要紧啊,我们调一下。为什么要给一个材质不能调?原来材质,因为它是一个默认的一个一个圆柱体,他默认材质是不能调的,之前有跟大家说过,那么他应该要调到一点,呃,暖色的颜色, 然后呢把它里面有一个叫发射啊,这其实是叫自发光啊,英文版它这个应该是叫自发光 image, 然后把它的这个颜色勾上,把它勾上啊,然后把它里面的颜色呢?把它 或者直接把它变白,然后也可以调一下颜色啊,调一下颜色 让他能够发亮。 哎,这样就可以了,这样就可以了。 这边看一下啊, 包括这个,这个也有一些问题啊,这个东西调一下,我们再轰一下啊,他这个中间有接缝啊,没办法,我们 因为是拼的啊,如果说你是模型做的,那就没问题了,回头看看,有机会我们把这两个模型给它替换一下,改一下。呃,可以 看到其实现在这个效果已经真实很多了。已经啊,变得挺好,尤其是他在有阳光的地方,这个砖头的这个效果啊非常棒。 行啊,那么就是这个灯光,灯光就是这么多。