上文中我们已经提供了方法将一个场景用微端的方式进行加载,其实主要是对场景模型进行加载,一般地形需要保留在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;
void Awake()
{
if (m_RendererInfo == null || m_RendererInfo.Length == 0)
return;

本文探讨Unity5.0中动态加载场景时遇到的光照贴图丢失问题。由于Unity5.0不再保存prefab的光照贴图,导致模型加载后缺少贴图效果。为解决此问题,文章提供了一个解决方案,即通过在模型上挂载特定脚本来实现动态加载光照贴图,从而确保模型显示正确。
最低0.47元/天 解锁文章
5288

被折叠的 条评论
为什么被折叠?



