Skip to content

Instantly share code, notes, and snippets.

@better666
Forked from QXSoftware/MeshRendererInspector.cs
Created November 7, 2018 03:21
Show Gist options
  • Save better666/1636d2acc0ccade7e98688432599e2c4 to your computer and use it in GitHub Desktop.
Save better666/1636d2acc0ccade7e98688432599e2c4 to your computer and use it in GitHub Desktop.
A unity mesh renderer inspector to view and modify renderer's sorting layer and material's render queue.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(MeshRenderer), true)]
public class MeshRendererInspector : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
OnGUISortingLayer();
}
private void OnGUISortingLayer()
{
GUILayout.Space(6);
var rend = (MeshRenderer)target;
GUILayout.BeginVertical("box");
var layerNames = SortingLayer.layers.Select(x => x.name).ToList();
EditorGUI.BeginChangeCheck();
var selectedIndex = EditorGUILayout.Popup("SortingLayerName", layerNames.IndexOf(rend.sortingLayerName), layerNames.ToArray());
if (EditorGUI.EndChangeCheck())
{
rend.sortingLayerName = SortingLayer.layers[selectedIndex].name;
EditorUtility.SetDirty(rend.gameObject);
}
EditorGUI.BeginChangeCheck();
var sortingOrder = EditorGUILayout.IntField("SortingOrder", rend.sortingOrder);
if (EditorGUI.EndChangeCheck())
{
rend.sortingOrder = sortingOrder;
EditorUtility.SetDirty(rend.gameObject);
}
var mats = rend.sharedMaterials;
foreach (var mat in mats)
DrawMaterialRenderQueue(mat);
GUILayout.EndVertical();
}
private void DrawMaterialRenderQueue(Material mat)
{
GUILayout.BeginHorizontal();
EditorGUILayout.ObjectField(mat, typeof(Material), false);
EditorGUI.BeginChangeCheck();
var val = EditorGUILayout.IntField("RenderQueue", mat.renderQueue);
if (EditorGUI.EndChangeCheck())
{
mat.renderQueue = val;
EditorUtility.SetDirty(mat);
}
GUILayout.EndHorizontal();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment