Notifications
Article
バッチ処理でシェーダを置き換える
Published 5 days ago
68
0
特定のシェーダが使われているマテリアルを一括で別のシェーダーに差し替える

Universal RP のシェーダを My/Lit シェーダに置き換える場合

[MenuItem("Tools/ReplaceToMyShaders")] private static void ReplaceURPShaders() { var materials = AssetDatabase.FindAssets("") .Select(x => AssetDatabase.GUIDToAssetPath(x)) .Where(x => x.EndsWith(".mat")) .Select(x => AssetDatabase.LoadAssetAtPath<Material>(x)) .ToArray(); var lit = materials.Where(x => x.shader.name == "Universal Render Pipeline/Lit"); AssetDatabase.StartAssetEditing(); var litShader = Shader.Find("My/Lit"); foreach (var mat in lit) mat.shader = litShader; AssetDatabase.StopAssetEditing(); }
AssetBundle に RenderPipeline 組み込みのシェーダーを単体で組み込むことはできないため,シェーダーを別名でコピーして全てのマテリアルのシェーダーを差し替える必要があります。

関連するフォーラムの投稿

https://forum.unity.com/threads/standard-shader-duplicated-in-asset-bundle-build.593248/#post-3972307
Tags:
Hidenori Doi
Aiming Inc. Lead Software Engineer / Manager - Manager
12
Comments