预制绑定光照贴图,网上解决方案很多,已下是要点:
//烘培完场景之后,保存光照贴图信息
void StoreLightmapData()
{
lightMap.Clear();
LightmapData[] lds = LightmapSettings.lightmaps;
foreach (LightmapData data in lds)
{
CustomLightMapData cd = new CustomLightMapData();
cd.lightMapDir = data.lightmapDir;
cd.shadowMask = data.shadowMask;
cd.lightMapColor = data.lightmapColor;
lightMap.Add(cd);
}
}
//因为预制不保存光照信息
//保存预制中MeshRenderer 的光照信息到存储列表
private void GetChildData(Transform parent)
{
if (parent.gameObject.isStatic)
{
var render = parent.GetComponent<MeshRenderer>();
if (render != null && render.lightmapIndex >=0)
{
datas.Add(new RenderLightmapData(render, render.lightmapIndex, render.lightmapScaleOffset));
}
}
for (int i = 0; i < parent.childCount; i++)
{
GetChildData(parent.GetChild(i));
}
}
//加载预制是执行脚本方法
public void SetAllLightmapData()
{