Unity学习笔记之五为Prefab添加材质

本次笔记中,我们将利用unity来创建并使用材质,把材质添加到我们的Prefab中去。

这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程《Unity游戏引擎的基础入门视频教程》,下载链接附在第二篇学习笔记中。

继续上次笔记中所记录的东西,在Project视图中,ImportedAssets-Meshes-Materials下我们可以看到一个没有纹理的材质球,这个材质是跟随我们的3d Max模型来的默认材质。因为这里我们要添加自己的材质,所以我们直接把这个材质球删除。

删除后,我们看到本来的Prefab颜色也发生了改变。

接下来我们在Materials文件夹下,右键新建一个材质(Material),命名为Stone_Floor。现在这是一个空白的材质,我们要为他选择着色器,Unity提供了十分多样的着色器(shader),这里我们先不做深入的讨论,直接选择Bumped Specular(凹凸高光),这是十分常用的着色器。

Bumped Specular中可以从下往上看,BaseMap和Normal map(基础贴图和法线贴图);Shininess是反射度;Specular Color就是高光颜色;Main Color也就不需要解释了。。

现在我们还没有导入任何的纹理(Texture),接下来我们来导入纹理。

先在ImportedAssets文件夹下面新建一个文件夹,命名为Textures,进入Textures 后,引入我们的第一个纹理。

右键Import -New Assets,然后进入我们的工程文件中,找到我们想要找的纹理。路径是:Imported Assets——Textures——Floor_Tile_Diffuse.tga。

Assets文件的下载地址为:http://pan.baidu.com/s/1bn8MSlL

引入纹理贴图之后,选中它,将目光移到Inspector视图上去,首先是Texture Type,材质的类型,有Texture,Normal Map(法线贴图)等选择,这里我们就选择Texture,如果你要作类似第一人称射击的游戏界面,我们可以选择GUI相关的类型。

接下来是第二个Texture,继续右键,Import new Assets,将Floor_Tile_Normal_Output.tga引入。顾名思义,我们可以看得出来这个纹理是我们的法线贴图,我们可以直接在Inspector视图中将其Texture Type修改为Normal Map,但Unity可以自动检测,来为我们提供的贴图进行订正,所以这里我们先不修改第二个Texture的类型。

我们先回到Materials文件夹,找到我们之前创建的那个新材质球,来为他添加贴图。

方法有两种:

第一种方法是选中材质球后,移动到Textures文件夹,直接把两个材质拖动到对应位置。下面我们把基础贴图拖动过去。拖动之后,我们会在又下角看到这个纹理的效果。

第二种方法是选择Normalmap空白纹理框中的select按钮,来选择纹理。我们选中Floor_Tile_Normal_Output.tga,双击就可以导入。

这个时候,你会发现纹理有些不正常,是因为Unity现在没有识别法线贴图。我们看到在效果显示图上方,有一行小字,This texture is not marked as a normal map。正是因为我们引入的时候没有修改纹理的类型,所以才会这样,我们点击Fix Now,就能够迅速修复。

这个时候,回到我们导入的第二个纹理,会发现它的类型已经被订正为Normal map。

现在,我们的材质球已经制作完成,可以将它拖动到任何我们想赋予此种材质的物体上。

这里还要说的是,我们可以调整此地板材质的分格数量,选中材质球后,Inspector视图中,将两个纹理贴图的Tiling中XY均改为2,那么地面的“瓷砖”就会多一倍。应该尽量让两个Tiling的数值保持一致,否则有时候效果会看起来怪怪的。

我们可以通过下面两个图地面和右下角预览的对比中观察出来。

这里视频的原作者为大家推荐了一款功能强大的纹理制作软件叫做Substance Designer,可以结合PS来处理十分细节的纹理图案,我们即将导入的两个纹理就是视频作者使用这款软件制作的,大家有兴趣的可以自己探索一下~我现在真的还不会用。

我们知道如何导入纹理制作自己的材质后,我们再引入几种材质,来将墙壁和天花板的材质也填充完毕。在Materials文件夹下,右键,Import New Asset,选择工程文件Materials文件夹下的Rock.sbsar和WoodPlank.sbsar。我们会发现,Materials文件夹下会多出两个材质球。这是石头和木板的纹理。

这里要说明一下,这两个纹理是使用第三方插件制作,所以有一个小弊端就是,在Project视图中无法将材质球拖动赋予给一个物体。我们需要这样将材质赋予给一个物体。首先选中Rock.sbsar材质球,我们会在Inspector中发现有关这个材质的更多细节。我们需要拖动Inspector中间的小Rock材质球才可以将材质赋予物体。如下面第二张图。

按照同样的方法,将石头材质再赋给天花板,将木板材质赋给两边的墙。这样我们就已经完成了对组件材质的添加,我们选中当前Scene视图中的组件,点击Apply,就可以将材质变化同步到Prefab中,这样以后添加的所有Prefab都会带有纹理。

至此,我们已经可以自己为物体添加材质了。

2015.2.28     19:42

By Mr.Losers

时间: 2024-10-23 14:08:32

Unity学习笔记之五为Prefab添加材质的相关文章

Unity学习笔记之四完善Prefab并添加First Person Controller

好久没学东西并用博客记录了,这个年过的很懒散,慢慢临近开学了,也要提前适应一下,写写东西,这样开学才能更好的进入状态呀-- 本次笔记中,我们将来雕琢一个更加完善的Prefab,并添加一个第一人称角色在场景中. 这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>.下载地址附在第二篇笔记中. 上一篇教程我们创建了一个Prefab,在最后我利用四个Prefab通多顶点捕捉建立一个简易的隧道.这只是为了示意Prefab的便捷性,下面我们先把这个隧道删除到只

Unity学习笔记:预制件Prefab的创建和使用

在制作游戏过程中,会需要通过代码创建多个一模一样的GameObject,比如射击游戏中的子弹,杂兵等各种. 在Unity中一般叫做Prefab预制件,起到模板的作用,可以快速的复制出相同的GameObject. 创建Prefab预制件 一般都会建立独立的目录,用于存放预制件. 第一种方法 在场景中添加一个GameObject,完成相关的设置.然后将其拖拽到Assets/Prefabs中 第二种方法 在Assets/Prefabs中,新建空的预制件 然后将场景中的GameObject拖到这个上面

Unity3D学习笔记之八为场景添加细节(一)

这一系列教程以及素材均参考自人人素材翻译组出品的翻译教程<Unity游戏引擎的基础入门视频教程>,下载链接附在第二篇学习笔记中. 我花了30分钟做了一个中等大小的迷宫场景,不知道大家自己发挥,做的场景大小如何. 在完成场景之后,我们看到Hierarchy视图里面的东西已经满了,所以我们先来整理一下Hierarchy视图.创建一个空的游戏物体命名为Environment. 然后来到Hierarchy视图,先讲First Person Controller找到,挪到最上方,然后选中第一个物体,按住

linux网络编程学习笔记之五 -----并发机制与线程?

进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我仅仅是举几个样例作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.能够在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理须要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也非常easy,在主线程中定时,定

【Cocos2D-X 学习笔记】为精灵添加单点触控

由于Cocos2d-x处于新学的阶段,因此最近也无法进行系统地更新,只会选择一些典型的Demo贴上来,一来是与大家分享,而来也可以作为以后回顾时的参考. 今天介绍一下Cocos2d-x的触摸事件处理,了解Android开发的朋友们知道,Android里会用一个OnClickListener()进行事件监听,而在J2SE中也会有Event类实现专门的监听处理.在Cocos2d-x中,因为是游戏引擎,用户在玩游戏时总是要通过屏幕与游戏进行交互,可想而知触摸事件是主要处理的事件.这里主要讲一下如何为精

quick-cocos2d-x学习笔记【4】——添加文本

文本的添加在quick中被封装在ui类中,它可以创建EditBox,菜单以及文本,文本总得来说可以创建TTF和BMFont两种. api对于它的说明很详细,ui.newBMFontLabel(params),参数中 text: 要显示的文本 font: 字体文件名 align: 文字的水平对齐方式(可选) x, y: 坐标(可选) 所以我们创建一个文本可以使用这样的代码, function MyScene:ctor() local labelBMFont = ui.newBMFontLabel(

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

Citrix XenMobile学习笔记之五:XenMoble架构组件

XenMobile Enterprise包含了电子邮件和网页浏览等安全的移动生产应用程序,并且保障档共享.同步处理和编辑的安全.Citrix凭借这个无可比拟的整合式移动服务,成功在企业移动办公市场上脱颖而出,傲视同侪. 现今的工作模式讲求从各种移动装置上安全和顺利地存取应用程序与资料.员工则需从易用的统一化企业app store,获取移动.Windows.网络及软件即服务(Software as a service,SaaS)应用程序.员工需要能够随时随地检视.编辑.同步处理和分享资料,并在各种

linux网络编程学习笔记之五 -----并发机制与线程池

进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我只是举几个例子作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.可以在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理需要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也很简单,在主线程中定时,定时到期,