#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