Simpler way to hide script field in inspector per class.

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

View File

@ -14,6 +14,11 @@
"name": "com.unity.modules.physics", "name": "com.unity.modules.physics",
"expression": "", "expression": "",
"define": "COM_UNITY_MODULES_PHYSICS" "define": "COM_UNITY_MODULES_PHYSICS"
},
{
"name": "com.unity.netcode.gameobjects",
"expression": "",
"define": "COM_UNITY_NETCODE_GAMEOBJECTS"
} }
], ],
"noEngineReferences": false "noEngineReferences": false

View File

@ -1,34 +0,0 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace Utils
{
[CustomEditor(typeof(ScriptableObject), true)]
public class DefaultScriptableObjectEditor : 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();
}
}
}
}
#endif

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: cf2664ad6bca36847b220c7a796fda2f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: eb81e1373aff45646b4be5eaacc2d20f guid: bd71dcc30125e161ca9c7faddd531ca2
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2

View File

@ -1,6 +1,6 @@
{ {
"name": "ru.shazbot.utils", "name": "ru.shazbot.utils",
"version": "3.1.1", "version": "3.1.2",
"displayName": "Utils", "displayName": "Utils",
"description": "Utility useful for almost any project.", "description": "Utility useful for almost any project.",
"licensesUrl": "https://git.shazbot.ru/Utils.git/tree/LICENSE.md", "licensesUrl": "https://git.shazbot.ru/Utils.git/tree/LICENSE.md",