Skip to content

Instantly share code, notes, and snippets.

@strich
Created September 3, 2014 05:49
Show Gist options
  • Save strich/aee7ba4d7251f261def6 to your computer and use it in GitHub Desktop.
Save strich/aee7ba4d7251f261def6 to your computer and use it in GitHub Desktop.
public class BulkMaterialSwapWindow : MonoBehaviour {
public Shader oldShader;
public Shader newShader;
[MenuItem("WFTO/Bulk Asset Modifier/Bulk Shader Swap")]
static void Init() {
BulkShaderSwapWindow window = EditorWindow.GetWindowWithRect(typeof(BulkShaderSwapWindow), new Rect(0, 0, 165, 100));
window.Show();
}
void OnGUI() {
EditorGUILayout.BeginHorizontal();
oldShader = EditorGUILayout.ObjectField("Old Shader", oldShader, typeof(Shader), true);
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
newShader = EditorGUILayout.ObjectField("New Shader", newShader, typeof(Shader), true);
EditorGUILayout.EndHorizontal();
if (GUILayout.Button("Swap Shader"))
if (oldShader == null || newShader == null)
.ShowNotification(new GUIContent("No Shader added for swapping!"));
else
SwapShader();
}
private void SwapShader() {
var assets = GetAssetsOfType<Object>(".mat");
Debug.Log(assets.Length + " materials found.");
int materialCounter = 0;
foreach (var assetObject in assets) {
Material assetMat = assetObject as Material;
if (assetMat == null)
continue;
if(assetMat.shader == oldShader)
assetMat.shader = newShader;
}
Debug.Log(materialCounter + " materials modified.");
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment