上文中我们已经提供了方法将一个场景用微端的方式进行加载,其实主要是对场景模型进行加载,一般地形需要保留在level中,理论上其他所有资源都可以分割出去然后进行动态加载,我们在制作场景时免不了要对场景进行烘焙,这样模型上就带了光照贴图,但是在unity5.0中,prefab并不会保存模型的光照贴图,这样如果你将模型分割出去再进行动态加载,那么他重新显示出来的模型并不带贴图效果,这个问题在unity4.6之前是不需要考虑的,但官方出于其他考虑将这一功能给去掉了,导致给我们的微端场景加载带来了困难。
为了解决这一问题我们想了很多方法,查看了很多资料,最后从unity3d开发人员那里得到了一个比较满意的处理结果,以下就是福利了,你只需将以下脚本挂到你需要加载的prefab模型上即可
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class PrefabLightmapData : MonoBehaviour
{
[System.Serializable]
struct RendererInfo
{
public Renderer renderer;
public int lightmapIndex;
public Vector4 lightmapOffsetScale;
}
[SerializeField]
RendererInfo[] m_RendererInfo;
[SerializeField]
Texture2D[] m_Lightmaps;