最近做项目遇到一个问题,由于场景太大,分成多个库区,每个库区都是一个场景,摆放着各种设备。而且要求每个库区之间要实现无缝切换,不能有等待时间,很明显,切换库区的时候通过场景加载时走不通的。所以想到把所有库区放到一个场景来处理,但是这样的话烘焙场景就有问题了,由于场景太大,贴图数量模型数量太多,常常会烘焙失败。于是,心生一计,分场景烘焙,然后动态合并到一个场景中,这样每个场景的光照信息都得以保存,而且库区之间还能实现无缝切换,下面写一个简单的Demo来演示一下:
1.创建两个场景,分别放置不同的东西
场景1
场景2
然后在场景1中 添加一个代码,挂载在场景中随便一个gameobject上,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class AddNewScene : MonoBehaviour
{
public string LevelName;
// Use this for initialization
void Start () {
if (LevelName.Length > 0)
{
Application.LoadLevelAdditive(LevelName);
}
}
// Update is called once per frame
void Update () {
}
}
接着在bulidsetting把两个场景添加上去:
运行结果如下:
我们再看看Hierarchy面板:
就这样完成了场景的合并,适用于大场景的分场景烘焙,完毕。