Simpler way to hide script field in inspector per class.
This commit is contained in:
53
Runtime/HiddenScriptFieldInspector.cs
Normal file
53
Runtime/HiddenScriptFieldInspector.cs
Normal 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
|
Reference in New Issue
Block a user