I already posted on the forum, but I got no response there, so I try again, here.
I am currently working on a project that requires me to load assets and scenes from an external source (and change them without rebuilding the application), and AssetBundles seemed like the best way of doing it. Loading Assets is not a problem, but scenes seem to be a bit uncooperative.
Firstly, an AssetBundle apparently only contains the whole path to the scenes, not the scene names that are needed to load the scene, which forces me to do this, which seems to add unnecessary complexity…is there a better way to load a scene from an AssetBundle?
private void LoadBundleScene() {
AssetBundle bundle = AssetBundle.CreateFromFile("AssetBundles/testbundle");
Application.LoadLevel(ToSceneName(bundle.GetAllScenePaths()[0]));
}
private string ToSceneName(string path) {
string[] parts = path.Split('/');
string scene = parts[parts.Length - 1];
return scene.Remove(scene.Length - 6);
}
The second problem concerns LightMaps. Whatever I do, I can’t get LightMapped scenes to load correctly. When try to load the scene normally or asynchronously, the geometry renders completely black and I get an error message, stating that Unity “Failed reading from: ‘d8/d858b9ec64c52b36f62218c8d121d791.ecm’.”. When I try to load the scene additively (which according to U-staff on the forums is still unsupported, as of May 2015), the scene renders white, with a hint of shadows.
The links to the forum posts are here (scene loading) and here (LightMapping), the latter has some images.