代码设置AlwaysIncludedShaders

作者:追风剑情 发布于:2018-12-11 15:52 分类:Unity3d

示例


  1. // 将shader加到AlwaysIncludedShaders
  2. public static void AlwaysIncludedShaders(Object folder)
  3. {
  4. if (folder == null)
  5. return;
  6.  
  7. string folder_path = AssetDatabase.GetAssetPath(folder);
  8. if (!AssetDatabase.IsValidFolder(folder_path)) {
  9. EditorUtility.DisplayDialog("Error", "请选中Shader所在文件夹", "OK");
  10. return;
  11. }
  12. //在用户所选中的文件夹下搜索所有Shader
  13. Shader[] shaders = Selection.GetFiltered<Shader>(SelectionMode.DeepAssets);
  14. if (shaders == null || shaders.Length == 0) {
  15. EditorUtility.DisplayDialog("Error", "未搜索到Shader文件", "OK");
  16. return;
  17. }
  18.  
  19. //修改GraphicsSettings
  20. SerializedObject graphicsSettings = new SerializedObject(AssetDatabase.LoadAssetAtPath<Object>("ProjectSettings/GraphicsSettings.asset"));
  21. SerializedProperty m_AlwaysIncludedShaders = graphicsSettings.FindProperty("m_AlwaysIncludedShaders");
  22. m_AlwaysIncludedShaders.ClearArray();
  23. SerializedProperty element;
  24. for(int i=0; i<shaders.Length; i++) {
  25. m_AlwaysIncludedShaders.InsertArrayElementAtIndex(i);
  26. element = m_AlwaysIncludedShaders.GetArrayElementAtIndex(i);
  27. element.objectReferenceValue = shaders[i];
  28. }
  29. graphicsSettings.ApplyModifiedProperties();
  30. }


效果

11111.png

Always-included Shaders中的shader会存放到游戏包中

1111.png

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号