Hey, so I’ve got a SerializedObject in my EditorWindow script, and I need to draw the object’s custom editor within a panel I have set aside for it in my custom window.
How do I do this?
Hey, so I’ve got a SerializedObject in my EditorWindow script, and I need to draw the object’s custom editor within a panel I have set aside for it in my custom window.
How do I do this?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Reflection;
using System;
using UnityEditor;
public class SerilizationWindow : EditorWindow
{
public static void ShowSerilizationWindow(SerializedObject target)
{
if (target == null)
{
Debug.Log("<color=red>ShowSerilizationWindow target is null</color>");
return;
}
SerilizationWindow window = GetWindow(typeof(SerilizationWindow)) as SerilizationWindow;
window.minSize = new Vector2(600, 500);
window.position = new Rect(Screen.width / 2f, Screen.height / 2f, 200, 300);
window._targetObject = target;
window.Show();
}
public SerializedObject _targetObject { get; set; }
private Vector2 _scrollPos = Vector2.zero;
private void OnGUI()
{
if (_targetObject == null)
{
EditorGUILayout.HelpBox("Target SerializedObject is null!", MessageType.Warning);
}
else
{
// display serializedProperty with selected mode
Type type = typeof(SerializedObject);
PropertyInfo infor = type.GetProperty("inspectorMode", BindingFlags.NonPublic | BindingFlags.Instance);
if (infor != null)
{
infor.SetValue(_targetObject, InspectorMode.Normal, null);
}
// _targetObject.inspectorMode = this.m_InspectorMode;
_scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
SerializedProperty iterator = _targetObject.GetIterator();
bool enterChildren = true;
while (iterator.NextVisible(enterChildren))
{
enterChildren = false;
EditorGUILayout.PropertyField(iterator, true, new GUILayoutOption[0]);
}
EditorGUILayout.EndScrollView();
}
}
}