首页 > 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
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

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

  1. Bay 说:

    我的情况是把Prefab做成Assetbundle,加载后设置好对应的LightMapIndex和LightMapScaleOffset以及LightmapSetting。但是LightMap不显示。最后发现是由于Shader打包时,Unity自动将LightMap的部分裁掉了。你们可以试试在Edit/Project Setting/Graphics里把Shader stripping的Lightmap modes设置成Manual后再打包看看好了没。

留下一个回复

你的email不会被公开。