材质-Material和预设体-Prefabs

材质-Material和预设体-Prefabs,第1张

材质(Materials)用来把网格(Mesh)或粒子渲染器(Particle Renderers)贴到游戏对象上。他们在定义对象怎么被显示发挥重要组成部分。材质包括用于呈现网状或颗粒着色器的参考,所以这些组件不能在没有材质的情况下显示。

Material这个需要结合Shader来讲,计算机图形学里本身就没有Material这个东西,引擎加入这个其实是在shader和主程序之间搭建了一座桥梁,可以说Material是一个着色器管理器,所以很多接口都是对shader的控制。这里我们先讲Material,后续章节会讲到Shader。

Unity中材质和预设物是我们常用的两种资源,可以在Project视图中直接创建,非常好用,能够简化我们开发项目的过程。下面就对它们进行详细介绍。

Unity中给我们提供的材质有三种:Material(普通材质)、Physic Material(物理材质)、Physics2D Material(2D的物理材质)。这里主要讲前面两种。

我们首先创建一个材质,步骤如图1.1:

图1.2就是我们创建的新材质的Inspector视图:

任何材质的属性取决于选定的着色器(Shader)发生变化。这是最常用的三种属性:Shader(着色器)-将被材质(Material)使用的着色器。Main Color(主颜色)-任何一种色调都可使用,不填色就使用白色。Base(基本)- 将被显示的纹理。

材质是用来放置纹理(Textures)到你的游戏对象。您不能在没有材质的情况下直接增加纹理,这样做会隐式地创建一个新的材质。正确的工作流程是创建一个材质,选择雀含一个着色器,并选择纹理资源(s),以一并显示。

当我们创建好一个材质后,第一件事情就应该决定使用的着色器。我们可以从着色器下拉菜单选择。如图1.3:

我们可以选择任何在项目资源文件夹存在的着色器或一个内置的着色器。还可以创建你自己的着色器,其实就是选择一个材质类型。使用内置的着色器的详细信息,查看内置着色器指南(Built-in Shader Guide),这里不对着色器进行研究。下面我们就用Standard(标准类型)类型的Shader来进行介绍。图1.1就是Standard类型的Inspector视图。

我们可以在Albedo后面的选项中点击选择材质的颜色,还可以通过属性前面的小圆圈按钮给材质添加纹理。如图1.4:

图中圆圈标出的地方是材质反射光,用来反射材质的颜色和纹理,如图1.5:

按照图1.1我们创建一个新的Physic Material,如图1.6既是Physic Material的Inspector视图:

Daynamic Friction:动摩擦系数,是物体运动时的摩擦系数。取值范围为0-1,取值为0将导致物体表面接近冰面的特性,取值为1是,除非有外力或重力作用,物体将处于静止。

Static Friction:静态摩擦系数,是物体静止不动时的摩擦系数。取值顷仔笑0-1。

物理中对摩擦力的定义是:当一个物体在另一个物体的表面上相对运动(或有相对运动的趋势)时,受到的阻碍相对运动(或阻碍相对运动趋势)的力,叫摩擦力,可分为静摩擦力和滑动摩擦力。静摩擦力—— 有相对运动的趋势时发生作用; 滑动摩擦力 ——相对运动是发上作用。静摩擦力<=动摩擦力。所戚雀以静态摩擦系数要<=动摩擦系数。

Bounciness:d力或d性,取值0-1,0表示不发生d跳,即物体的动能完全损失;1表示物体发生没有动能损失的反d,用自由落体来说明的话,如果值为1,则物体会反d到自由落体开始的地方,而且一直这样d跳下去。

Friction Combine:摩擦力组合。如图1.7:

图中Average-使用两个摩擦力的平均值;Minimum-使用两个摩擦力中的最小值;Maximum-使用两个摩擦力中的最大值;Multiply-使用两个摩擦力的乘积。

Bounce Combine:反d组合,同摩擦力组合的选项类似。如图1.8:

Prefabs意为预设体,可以理解为一个游戏对象及其组件的集合,目的是使游戏对象及资源能够被重复利用。预设体作为一个资源,可以应用在整个项目的不同场景中。当拖动预设体到场景中就创建了一个实体。该实体与原始预设体是关联的。对预设体进行更改,实例也将同步修改。这样的 *** 作除了可以提高资源的利用率,还可以提高开发的效率。理论上推荐需要多次使用的对象都制成预设体。下面我们就创建一个新的prefabs.

首先我们创建一个Prefabs文件夹来管理我们创建的prefabs。图1.1中也可以看到prefab选项,单击就可以创建了,结果如图1.9:

这个空的预设体相当于一个空的容器,等待游戏对象数据来填充,下一步我们就把Hierarchy视图中的Cube游戏对象(需要做成预设体的游戏对象)拖到这个名为prefab-1的空预设体上,此时prefab-1的图标会变化,而且Hierarchy视图中的Cube字体颜色变成了蓝色,如图2.0:

这时一个完整的预设体就创建完成了,我们可以把预设体拖动放入Scene视图场景中,多拖入几个,如图2.1:

此时如果我们对预设体prefab-1进行改变,那么Scene场景中的所有预设体的实例游戏对象都会随之改变,如图2.2:

图中预设体prefab-1改变了颜色,所以Scene场景中的所有预设体的实例都变成了蓝色,同理如果我们改变预设体prefab-1的纹理贴图,那么它的实例也会全部改变,这里不做实验了。

值得说一下的小技巧是:将Hierarchy视图中的游戏对象直接拖动到Project视图中的Prefabs文件夹中也可以快速制成一个预设体,这样就省去了创建一个空预设体的步骤。

unity场景中物体背面是黑的,解决方法如下:

先在Assets里创建一个放预制体的文件夹Prefabs把模型可以直接拖闹纤顷进去。托进来之后吧模型托进场景中。托进场景中之后会发现整个模型都是黑色的。这里我用的之前的实验室只有中间黑色的部分是新的模型。这个时候我们选中Prefabs文件夹里的模型,可以看到现在的文件夹里只有一个模型其他什么东西都没有。选择Materials可以看到下边的材质球也全是空的。选择Location右边的Use Embedded Materials,这里默认选择的是Use Embedded MaterIals,点击他上边的Use External Materials(Legacy)。选择了之后直接点击下边的Apply就行。如果资源太多的话可能需要等待一下。等加载完之后液陆再回到Prefabs文件夹里可以看到多了一个Materials文件夹。点进去可以看到里边就是我们需要的资源。这时候我们再回到Materials下边选择第二个Use Embedded Materials。可以看到下边的材质球都有了。如果是空场景的话这个时候模型应该已经恢复颜色了。但是我们的场景中本来就有物体,并且灯光都是分层打光的所以我的还是黑色。可以看看我的实验室是SYS层,以前的设备是SB层。我竖禅们现在只需要改一下新模型的层就可以了。选中场景中的新模型。更改一下Layer的属性为SB。这样模型就恢复了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12251990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存