问题
- 我分析游戏的时候,发现同一个着色器的实例会被加载多次。
原因
如果有两个使用了相同着色器或者材质的Assetbundle,但Shader没被标记在任何一个Assetbundle中,Unity将会在每个Assetbundle中打包着色器。如果在本地场景中使用一个着色器/材质,并将着色器/材质打包到Assetbundle中,也可能发生这种情况
解决方案
选择哪些资源会被打包到Assetbundle,哪些资源会被打包到可执行文件中。您可以将材质或着色器打包到一个公共的Assetbundle中(例如art.unity3d)中,然后首先加载该Assetbundle。
更多信息
https://docs.unity3d.com/Manual/AssetBundlesIntro.html
https://docs.unity3d.com/Manual/Shaders.html
https://docs.unity3d.com/Manual/BuildingAssetBundles.html
https://unity3d.com/learn/tutorials/topics/best-practices/assetbundle-usage-patterns