首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之Unity5.x运行时动态更新烘培贴图(八十七)
2015
12-23

Unity3D研究院之Unity5.x运行时动态更新烘培贴图(八十七)

前段时间我研究过这个问题,但是没有解决只好作罢。今天刚好有人又问我这个问题,我得空查了一下还是找到了解决办法。另外也感谢问我的人,解答问题的同时也是我学习的过程。

运行时更新烘培贴图分两种情况

1、场景的物件没有发生变化(也就是说没有运行时加载在场景上的Prefab)此时可以直接更换烘培贴图。

2.场景的烘培贴图已经更新,但是有些物件prefab想运行时加载进来。如果直接Instance的话 这个Prefab是没有烘培信息的。(灰颜色的)
解决这个问题我查到了 一篇大大的文章,它带了例子大家可以下载下来。  http://forum.unity3d.com/threads/problems-with-instantiating-baked-prefabs.324514/#post-2177524

代码在这里,把如下代码挂在GameObject上。当场景烘培结束后,把他保存成prefab,运行的时候直接加载进来就行了。

 

点击 Assets/Bake Prefab Lightmaps 进行烘培, 这样它的脚本里会把index 和 offset保存在prefab里。它还会保存上当前烘培场景的Lightmap,如果运行时想更换的话,你可以加一些自己的逻辑进行切换。

Unity3D研究院之Unity5.x运行时动态更新烘培贴图(八十七) - 雨松MOMO程序研究院 - 1

Unity3D研究院之Unity5.x运行时动态更新烘培贴图(八十七) - 雨松MOMO程序研究院 - 2

最后欢迎大家测试,欢迎大家提出宝贵意见,我们一起把unity这个坑填了!

下载: http://pan.baidu.com/s/1kTU9EOB

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

  1. prefab从resources目录加载竟来,可以正常显示光照贴图,但是把prefab制作成assetbundle,lightmap就不能正常恢复了,debug frame 显示LIGHTMAP_OFF。求雨神帮助~

  2. 在另一个场景烘焙的Prefab影子是落在地上的,这样新场景中使用Prefab时就没有地面影子了。在Prefab下放一个面片接收影子,使用时把面片没有影子的部分透明化,请教一下有办法做到吗?

      • 松 我使用的脚基本和上面一样,只是没有每次Lightmapping.Bake(); 因为直接是外包bake好了的,然后我把prefab打包成了bundle,这样在pc上是没有问题的,上真机就不行,这是我也没有bake的问题,还是不能打bundle的问题呢?求指点

  3. Unity5.3 在pc上显示一切正常,打包到安卓机上就没效果了,输出的值都是一样的。是不是有什么需要设置的@雨松MOMO大大

  4. 想到个问题,请问,我可以在不使用unity自带的分UV功能的情况下,使用在3D软件里面分好的UV2以及用3D软件来进行光照贴图的烘焙,然后把烘焙好的数据重新在unity里面创建assetdate当作光照贴图使用吗

      • 实际测试了一下,好像没办法获得模型和光照贴图的对应关系,必须烘焙了之后才能得到一个对应关系,倒是烘焙之后可以吧自己另外烘焙得贴图当做光照贴图插进来

        • 怎么插,5.3烘培的贴图选择键都被锁定了,就是3D软件烘培的光照贴图怎么连接到模型上,整体UV摆放的位置也会被移动或者重新组入别的部件了。

  5. 大神求助!为什么美术烘焙好的场景导出package我这里再导入 lightmap信息全都没了 用了你上面的代码将场景全部变成prefab再导出 信息有 但是看到的效果还是不同 这是为什么?

  6. 难道游戏中真的要放弃烘培吗,如果游戏的关卡里不能使用同一烘培结果,那游戏的体积会无穷增加,没办法用了啊
    难道只能先在3dmax里烘培好吗?
    求松哥指点[疑问]

  7. 非常感谢雨松的教程,有个问题想问您。
    5.3后,如果多场景使用同一烘培结果呢,如:关卡设计的时候,绝大部分场景是一样的,就某一个球的位置变了
    完全可以使用同一烘培结果[疑问]

    求指点