1
0
mirror of https://github.com/Siccity/xNode.git synced 2026-03-26 22:49:02 +08:00

!OW 让使用者可以自定义不需要显示的字段

This commit is contained in:
Icarus 2019-09-25 16:58:09 +08:00
parent 0602d3fccf
commit 2017fc8430

View File

@ -23,11 +23,34 @@ namespace XNodeEditor {
#if ODIN_INSPECTOR #if ODIN_INSPECTOR
internal static bool inNodeEditor = false; internal static bool inNodeEditor = false;
#endif #endif
private List<string> _excludesField;
public sealed override void OnCreate()
{
_excludesField = new List<string> { "m_Script", "graph", "position", "ports" };
var fields = GetExcludesField();
if (fields != null)
{
_excludesField.AddRange(fields);
}
Init();
}
protected virtual void Init()
{
}
public virtual void OnHeaderGUI() { public virtual void OnHeaderGUI() {
GUILayout.Label(target.name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30)); GUILayout.Label(target.name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30));
} }
protected virtual IEnumerable<string> GetExcludesField()
{
return null;
}
/// <summary> Draws standard field editors for all public fields </summary> /// <summary> Draws standard field editors for all public fields </summary>
public virtual void OnBodyGUI() { public virtual void OnBodyGUI() {
#if ODIN_INSPECTOR #if ODIN_INSPECTOR
@ -38,8 +61,7 @@ namespace XNodeEditor {
// serializedObject.Update(); must go at the start of an inspector gui, and // serializedObject.Update(); must go at the start of an inspector gui, and
// serializedObject.ApplyModifiedProperties(); goes at the end. // serializedObject.ApplyModifiedProperties(); goes at the end.
serializedObject.Update(); serializedObject.Update();
string[] excludes = { "m_Script", "graph", "position", "ports" };
#if ODIN_INSPECTOR #if ODIN_INSPECTOR
InspectorUtilities.BeginDrawPropertyTree(objectTree, true); InspectorUtilities.BeginDrawPropertyTree(objectTree, true);
GUIHelper.PushLabelWidth(84); GUIHelper.PushLabelWidth(84);
@ -55,7 +77,7 @@ namespace XNodeEditor {
List<string> _names = new List<string>(); List<string> _names = new List<string>();
while (iterator.NextVisible(enterChildren)) { while (iterator.NextVisible(enterChildren)) {
enterChildren = false; enterChildren = false;
if (excludes.Contains(iterator.name)) continue; if (_excludesField.Contains(iterator.name)) continue;
NodeEditorGUILayout.PropertyField(iterator, true); NodeEditorGUILayout.PropertyField(iterator, true);
_names.Add(iterator.name); _names.Add(iterator.name);
} }