- Home /
 
 
               Question by 
               Nemox · Feb 15, 2015 at 07:15 PM · 
                editorinspectoreditorwindowwindowserializedobject  
              
 
              Draw inspector for SerializedObject within EditorWindow?
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?
               Comment
              
 
               
              Answer by tinyant · Jul 05, 2017 at 09:04 AM
 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();
         }
     }
 }
 
 
               UnityEngine.Object selObj = Selection.activeObject;
                         //Transform trs = (selObj as GameObject).GetComponent<Transform>();
                         //obj = new SerializedObject(trs);
 
                         Animator animator = (selObj as GameObject).GetComponent<Animator>();
                         obj = new SerializedObject(animator);
 
                         SerilizationWindow.ShowSerilizationWindow(obj);
                 Firstly you should get target SerializedObject to draw the inspector. and GetIterator() get all SerializedProperty of SerializedObject.
Your answer
 
             Follow this Question
Related Questions
PropertyDrawer and EditorWindow 1 Answer
Get game view window current width & height in script 1 Answer
Set the Rect of PopupWindowContent 1 Answer
Custom Inspector for ScriptableObject 1 Answer
Multiple editor windows combined 0 Answers