Unity5动态加载烘培场景

  有时候咱们须要动态加载场景(好比场景比较大,或者一些无限重复的自动生成的场景),这时若是对场景又使用了烘培,那么在unity5里面就会有一些小问题。android

  1.在这种需求下咱们通常会把场景物体存成一个预置,须要的时候加载进来,可是在unity5里面,物体的lightmap信息(index和偏移)并不会记录在预置上,这致使你直接把预置加载进来看不到烘培效果,这里要这样,在加载以后手动的赋值这个lightmap信息,(你能够在烘培时预先保存这个信息),使用render的lightmapIndexlightmapScaleOffset来设置它的烘培信息。编辑器

2.然而使用上面的方法对于一些shader仍是会看到错误的结果(编辑器正确,至少android设备上是错的),由于unity5在某些设备上,对于这种动态加载的物体,不管你是否设置它的renderer的 lightmapIndex和 lightmapScaleOffset, 它都不会为其shader设置LIGHTMAP_ON这个关键字,若是看一下unity 支持light map的shader的源码,能够发现这个 LIGHTMAP_ON是控制显示烘培图的关键,可是这种状况unity5不会设置,而且你本身手动设置也不行。这里有一个方法,就是修改这个shader,本身加一组关键字,好比叫作DYNAMIC_LIGHTMAP_ON,就算没有定义LIGHTMAP_ON,定义了DYNAMIC_LIGHTMAP_ON也会触发lightmap的贴图,而后在代码里加载完毕动态场景后,设置这个keyword就好了spa


UNity4听说没有这个问题,对于动态场景,直接加载就自动有lightmap里了,由于unity4会把lightmap信息存储在预置里。htm


相关文章
相关标签/搜索