问题
- 我的渲染(Render)网格(Mesh)对象使用了光照贴图并组合成一个Prefab。
- I have been using the PrefabLightmapData workaround included on the Forum link.
- 我使用了博文PrefabLightmapData所推荐的解决办法
原因
- 默认情况下,用于处理光照映射模式的着色器没有在任何场景中使用,因此也没有被包含在游戏数据中。这可以减少着色器数据的大小。
解决方案
在Graphics setting 面板Edit -> Project Settings -> Graphics选项下面存在一个Light modes选项,点开之后会出现下拉框。该下拉框的默认值为Automatic。如果场景中没有使用某个着色器变体便剥离该着色器。您可以通过设置下拉框,将其设置为Manual来重载该剥离机制。您会看到以下选项(如图所示)。如果您不知道要使用哪种光照类型,您大可以将它们全部激活。不过指定贴图类型将有助于着色器变体的优化。
更多信息
http://forum.unity3d.com/threads/problems-with-instantiating-baked-prefabs.324514/
http://docs.unity3d.com/Manual/OptimizingShaderLoadTime.html
http://docs.unity3d.com/Manual/class-GraphicsSettings.html
本文适用于Unity 5.3及以上版本。