用Lightmapping的好处就不用多说了(渲染速度快又出效果), 下面是解决方案
一. 首先, 美术将A.Prefab放到场景中打光, 渲出Lightmapping, 假设生成的的是A_Lightmapping.exr
二.然后, 在运行时载入此A.Prefab, 这时是没有Lightmapping的, A模型是花的
三. 载入对应的Lightmapping并且添加进来
static public void AddLightmappingTex(string lightmappingFile, int lightmappingIndex)
{
LightmapData[] lightmapArray = LightmapSettings.lightmaps;
lightmapArray [lightmappingIndex].lightmapFar = Resources.Load(path) as Texture2D;
LightmapSettings.lightmaps = lightmapArray;
}
static public void SetLightmappingIndex(GameObject obj, int lightmappingIndex)
{
if (obj.renderer != null && obj.renderer.lightmapIndex != -1)
{
obj.renderer.lightmapIndex = lightmappingIndex;
}
int count = obj.transform.childCount;
for (int i=0; i<count; ++i)
{
SetLightmappingIndex(obj.transform.GetChild(i).gameObject, lightmappingIndex);
}
}
大功告成