首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之自制批量关联材质与贴图插件(五十八)
2013
05-08

Unity3D研究院之自制批量关联材质与贴图插件(五十八)

         美术做过的模型导出fbx,美术把Fbx和贴图文件给了程序,程序把Fbx导入工程可能会出现贴图和材质没有关联上的问题,如果场景材质非常多,一个一个去给材质贴图非常的费劲。我有一个办法,最好让美术装上Unity,美术在3DMAX中创建模型并且给材质贴图。然后打开Unity,先把贴图文件全部拷贝在Unity中,这样所有贴图就会有一个Unity的路径。Asset/Textures/pic.png 等等、。。。此时在回到3DMAX中,修改一下材质上贴图的路径,用上面Asset/Textures/pic.png 这样类型的路径重新引用一下下在3dmax中,这时候在导出FBX模型,最后将FBX模型放入Unity工程,你会发现所有材质已经被赋值贴图了。

 在插一句,因为Unity是左手坐标系,而3DMAX是右手坐标系,直接导出FBX以后模型X轴的旋转会变成-90。所以建议美术在3DMAX中修改一下模型的位置。方法是:3XMAX中切换顶视图,默认坐标轴向是 :X轴向右 :Y轴向上: Z轴朝向自己。  修改后还是在顶视图中改成:X轴向右: Y轴朝向自己: Z轴朝下。  这时候在导出FBX 放在Unity中就正常了。

         当Fbx导入Unity的时候会自动在当前路径下生成Materials文件夹,为了避免混乱建议每一个原始Fbx分别放在不同文件夹中,最后统一用Prefab来代替。

废话不多说,回到本篇的重点上,请记住一定要美术把材质的名称和贴图的名称保持一致,程序要根据材质名称去找对象的贴图。考虑到项目中会有多个模型使用同一个贴图的情况所以建议大家把贴图都放在同一个文件夹下,必须放在/Assets/Textures文件夹中。如下图所示,在Hierarchy视图中先选择需要批量关联的游戏对象,只需选择父对象就可以,程序会自动遍历所有子对象,然后点击Windows->ApplyMaterial弹出关联窗口。

官网上说是可以先把贴图文件放在Textures文件夹中,然后在把模型文件放入工程,Unity会自动匹配材质和贴图的关系,这个不办法我试过但是不是每次都会成功,我也不知道为什么,所以就写了这个插件。

 

Unity3D研究院之自制批量关联材质与贴图插件(五十八) - 雨松MOMO程序研究院 - 1

 

 

如下图所示,可以批量关联材质,也可以批量删除材质。我已经测试过比较多的场景材质和贴图的关联,也希望大家帮我测试测试嘿嘿。。

 

Unity3D研究院之自制批量关联材质与贴图插件(五十八) - 雨松MOMO程序研究院 - 2

 

关联前

 

Unity3D研究院之自制批量关联材质与贴图插件(五十八) - 雨松MOMO程序研究院 - 3

 

关联后

Unity3D研究院之自制批量关联材质与贴图插件(五十八) - 雨松MOMO程序研究院 - 4

 

 

把插件的代码放在Editor文件夹中,由于你的贴图可能是多个类型的,只需在下面代码的config数组中配置一下,目前我配置了.png .jpg .tag格式,也可以继续拓展。

 

最后是本文的下载地址:http://vdisk.weibo.com/s/AFWi4  

祝大家学习愉快,啦啦啦啦德玛西亚~~~~

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之自制批量关联材质与贴图插件(五十八)》有 30 条评论

  1. 说:

    直接导出FBX以后模型X轴的旋转会变成-90,在unity中能通过代码将角度调整么

  2. 小T 说:

    momo 大神 请教下, 我的些材质中有些有2张贴图但是mainTexture只能关联1张, 要想获取另外一张必须知道他shader中变量的名称,请问有什么简便的方法可以获取到他所关联的所有贴图?

  3. Guass 说:

    Shaders/Lightmapped/Diffuse 这个是需要2张贴图的 请教下老师怎么弄

  4. Newton 说:

    多个贴图怎么做?

  5. sharebophar 说:

    挖个坟,就是想问一下,这个东西如果升级到批量关联指定路径下的所有fbx的各自的贴图应该怎么写? Unity3D研究院之自制批量关联材质与贴图插件(五十八) - 雨松MOMO程序研究院 - 1

  6. sharebophar 说:

    挖个坟,就是想问一下,这个东西如果升级到批量关联指定路径下的fbx的贴图应该怎么写?

  7. hm 说:

    为什么我导入插件在为window中没有显示呢

  8. cosmos 说:

    你好,请问我想获取一个还没有实例化 预设的大小该怎么办? 我用tranform.collider.bounder.size 来获取正常的物件是没有问题的,获取预设的大小都为0.

  9. 阿伊呐 说:

    最后输出FBX时能够把材质,贴图,模型压缩成一个FBX文件的,只是这个文件有些大

  10. 崔彬0 说:

    MO哥,有个问题急求,我的程序运行在ios设备上,时间长了,程序越来越慢,这是什么原因造成的呢?

  11. Mr.ider 说:

    MONO哥有没有做过将虚拟翻书加到Unity里呢??我这里有一套虚拟翻书的程序,但不知道怎么嵌到Unity里。。如果实在不能嵌的话Unity打开外部EXE的代码是怎么写的呢?灰常感谢啦~~

  12. 欧宇龙 说:

    momo 探索一下在移动终端,即手机上。模型的面数,到底控制在多少才合适 嘿嘿

  13. 嘿,看来你也玩lol或者只看啦啦啦拉德玛西亚~~~

  14. Arkks 说:

    momo每次都要奇怪地卖萌- –

留下一个回复

你的email不会被公开。