什么情况下需要Lightmap?
移动平台上目前暂时还不能开实时光影效果,会卡成幻灯片。所以就需要将光影烘焙到贴图上。

什么情况下需要动态加载Lightmap?
1.当项目抛弃了Unity的多场景模式,也就是说整个项目只有一个scene,资源全部都是以AssetBundle的形式动态加载。
资源全部由自己来加载和卸载。加载出来的资源,需要设置LightmapIndex和LightmapScaleOffset。
2.根据时间变换,游戏中需要切换白天,黑夜的效果。也就是动态切换两张烘焙贴图。

网上的资料都是4.6版本或者之前的。
参考:http://blog.sina.com.cn/s/blog_697b1b8c0101frao.html
我测试了之后,是没有问题的。
步骤:
1.美术提供烘焙好后的场景
(设UV2,自己生成或者U3D勾选导入设置面板生成的都可以,设静态GAMEOBJECT烘培LIGHTMAP)
2.导出LightmapData,和每一个GameObject的LightmapIndex,LightmapScaleOffset
可以记录到Json,Xml或者Unity提供的ScriptObject
3.打包资源AssetBundle
(包括场景prefab,记录Lightmap信息的SceneLightmapData.asset,烘焙出来的贴图)
4.加载AssetBundle,实例化,重新赋予LightmapIndex,LightmapScaleOffset

Unity3d中ScriptableObject是一个非常有用的类,它可以帮助开发者存储一些希望保存的在运行时用到类的实例数据到文件里面。
我这里就用这种方式来记录Lightmap信息。

测试:

但是Unity5.x版本不能成功。

不知是我没找到方法,还是Unity以后会解决这个问题。
只是当下只能放弃动态加载的方式,只能直接场景打包,由U3D自行处理和Lightmap的关系。

测试工程:
链接:http://pan.baidu.com/s/1boxUT5d 密码:28kh

Unity Lightmap动态加载研究的更多相关文章

  1. 关于Unity里动态加载图片

    Resources.Load 使用该方法可以动态加载资源 过程: 1.首先需要在Project面板里创建一个名为Resources的文件夹(名字必须是这个 不能写错啊) 2.把要加载的游戏对象放到该目 ...

  2. Unity www动态加载网上图片

    一. 1.新建一个UGUI的Button,删掉它的Image组件,添加一个Raw Image组件.如图: 由于删除了Image组件,所以画圈的位置是空的,运行后会自动把Raw Image添加到那里. ...

  3. Unity中 动态加载 Resources.Load()和Asset Bundle 的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载. 初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安装包里,没有到的不会跟进去.我们在编辑器里看到的Ass ...

  4. Unity 利用UGUI打包图集,动态加载sprite资源

    今天做了一个UI界面,这个界面是好友界面,该界面上有若干个好友item. 需要对每个tem的头像对象(image)动态显示对应的头像.尝试利用UGUI的图集来加载,具体实现如下: 1.首先,需要知道S ...

  5. Unity动态加载和内存管理(三合一)

    原址:http://game.ceeger.com/forum/read.php?tid=4394#info 最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Re ...

  6. ExtJs中动态加载机制研究(转)

    觉得写的太好了,怕弄丢了,转一下:http://extjs.org.cn/node/659 昨天我们team对于extjs的动态加载机制做了些深入研究,这里先share下controller加载的结果 ...

  7. Unity使用脚本进行批量动态加载贴图

    先描述一下我正在做的这个项目,是跑酷类音游. 那么跑酷类音游在绘制跑道上的时候,就要考虑不同的砖块显示问题.假设我有了一个节奏列表,那么我们怎么将不同的贴图贴到不同的砖块上去呢? 我花了好几个小时才搞 ...

  8. Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  9. Unity学习笔记(5):动态加载Prefab

    第一种方法,从Resources文件夹读取Prefab Assets/Resources文件夹是Unity中的一个特殊文件夹,在博主当前的认知里,放在这个文件夹里的Prefab可以被代码动态加载 直接 ...

随机推荐

  1. SQL Server 2012复制教程以及复制的几种模式

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  2. Android studio 相关错误处理

    1.android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"  -->  在Activity中设置,表 ...

  3. Js循环读取JSON数据

    <script> $(function () { var jsonString = '{Unid:"1",CustomerName:"宋江",Age ...

  4. UI第七节——UISlider详解

    - (void)viewDidLoad { [super viewDidLoad]; // 实例化UISlider,高度对外观没有影响 UISlider *slider = [[UISlider al ...

  5. C和指针 第五章 逻辑位移与算术位移

    对于操作数的左位移都是相同的,右边空出来的位置用0补齐. 但是对于右位移,对于有符号和无符号数是不一样的,最高位的1有两种处理方式.逻辑位移和算术位移. 逻辑位移:右移入位用0补齐 算术位移:右移入位 ...

  6. HTML div 滚动条样式设计

    ::-webkit-scrollbar-track-piece{ background-color:#fff;/*滚动条的背景颜色*/ -webkit-border-radius:0;/*滚动条的圆角 ...

  7. C语言 链表排序

    #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef struct node{ in ...

  8. mysql锁SELECT FOR UPDATE【转】

    MySQL 使用SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEATABLE ...

  9. laravel 输出sql

    $queries = DB::getQueryLog(); $a = end($queries); $tmp = str_replace('?', '"'.'%s'.'"', $a ...

  10. Spring+SpringMvc+Mybatis框架集成搭建教程二(依赖配置及框架整合)

    依赖导入以及框架整合 (1).打开项目的pom.xml文件,声明依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" x ...