
image.png

image.png

image.png
using System.IO;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(PostProcessMaterial))]
public class PostProcessMaterialEditor : Editor
{
private PostProcessMaterial _postProcessMaterial;
private Material _tempMaterial;
private MaterialEditor _materialEditor;
private void OnEnable()
{
if (_postProcessMaterial == null)
{
_postProcessMaterial = (PostProcessMaterial)target;
}
}
private void OnDisable()
{
if (_materialEditor != null)
{
DestroyImmediate(_materialEditor);
}
}
public override void OnInspectorGUI()
{
DrawDefaultInspector();
if (_postProcessMaterial.material == null) return;
if (_materialEditor == null || _tempMaterial != _postProcessMaterial.material)
{
_tempMaterial = _postProcessMaterial.material;
_materialEditor = CreateEditor(_postProcessMaterial.material) as MaterialEditor;
}
if (_materialEditor == null) return;
_materialEditor.DrawHeader();
//非Assets目录下的材质球不允许编辑、ShaderGraph等
var isDefaultMaterial = false;
var path = AssetDatabase.GetAssetPath(_postProcessMaterial.material);
if (string.IsNullOrEmpty(path) || !path.StartsWith("Assets/") || (Path.GetExtension(path) != ".mat" && Path.GetExtension(path) != ".asset"))
{
isDefaultMaterial = true;
}
using (new EditorGUI.DisabledGroupScope(isDefaultMaterial))
{
_materialEditor.OnInspectorGUI();
}
}
}