You can integrate SaintsEditor with other editors.
public class MyEditorCore: SaintsEditorCore { public MyEditorCore(UnityEditor.Editor editor, bool editorShowMonoScript) : base(editor, editorShowMonoScript) { } public override IEnumerable<IReadOnlyList<AbsRenderer>> MakeRenderer(SerializedObject so, SaintsFieldWithInfo fieldWithInfo) { if(fieldWithInfo.FieldInfo?.Name == "...") // skip a field { return Array.Empty<IReadOnlyList<AbsRenderer>>(); } if(fieldWithInfo.PlayaAttributes?.Any(each => each is ShowInInspectorAttribute || each is ButtonAttribute)) // render ShowInInspector/Button { return base.MakeRenderer(so, fieldWithInfo); } // Otherwise, do not render it return Array.Empty<IReadOnlyList<AbsRenderer>>(); } }
Then, in your editor script:
[CustomEditor(typeof(MyTargetType), true)] public class IntegerateSaintsEditor: MyEditor { public override VisualElement CreateInspectorGUI() { VisualElement root = new VisualElement(); root.Bind(serializedObject); root.Add(base.CreateInspectorGUI()); // Fill with default behavior root.Add(new MyEditorCore(this).CreateInspectorGUI()); // Fill with SaintsEditor return root; } }