Simpler way to hide script field in inspector per class.

This commit is contained in:
2022-06-28 17:51:09 +02:00
parent 16ce496f12
commit 0e7276b98c
6 changed files with 59 additions and 82 deletions

View File

@ -0,0 +1,53 @@
#if UNITY_EDITOR
using Unity.Netcode;
using UnityEditor;
using UnityEngine;
namespace Utils
{
public abstract class HiddenScriptFieldInspector : Editor
{
private bool hideScriptField;
private void OnEnable()
{
hideScriptField = target.GetType().GetCustomAttributes(typeof(HideScriptField), false).Length > 0;
}
public override void OnInspectorGUI()
{
if (hideScriptField)
{
serializedObject.Update();
EditorGUI.BeginChangeCheck();
DrawPropertiesExcluding(serializedObject, "m_Script");
if (EditorGUI.EndChangeCheck())
{
serializedObject.ApplyModifiedProperties();
}
}
else
{
base.OnInspectorGUI();
}
}
}
[CustomEditor(typeof(MonoBehaviour), true)]
public class DefaultMonoBehaviourEditor : HiddenScriptFieldInspector
{
}
[CustomEditor(typeof(ScriptableObject), true)]
public class DefaultScriptableObjectEditor : HiddenScriptFieldInspector
{
}
#if COM_UNITY_NETCODE_GAMEOBJECTS
[CustomEditor(typeof(NetworkBehaviour), true)]
public class DefaultNetworkBehaviourEditor : HiddenScriptFieldInspector
{
}
#endif
}
#endif