title: Unity - EditorGUILayout show hidden element inside Serializable field
body: <p>I am using Unity 2018.3.14f1 and I am trying to create new <code>ScriptableObject</code>.
  Here is my code:</p>
  
  <pre><code>using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  using Items;
  using System;
  #if UNITY_EDITOR
  using UnityEditor;
  #endif
  
  [CreateAssetMenu(fileName = "New Weapon", menuName = "Ingame Item/Weapon")]
  public class Weapon : ScriptableObject
  {
      public GameObject modelMesh;
      public WeaponType weaponType;
      public SlotType slotType;
      public WeaponTextureMaps[] weaponTextureMaps;
  
  
  }
  
  [Serializable]
  public struct WeaponTextureMaps
  {
      public Material material;
      public Texture normalMap;
      public Texture albedoMap;
      public Texture metalicMap;
      public Texture ambientOcullsionMap;
      public bool hasEmission;
      [HideInInspector]
      public Texture emissionMap;
  }
  
  #if UNITY_EDITOR
  [CustomEditor(typeof(Weapon))]
  public class Weapon_Editor : Editor
  {
      Weapon script;
      GameObject model;
      SerializedProperty m_weaponTextureMaps;
  
      public void OnEnable()
      {
          script = (Weapon)target;
          model = script.modelMesh;
      }
  
      public override void OnInspectorGUI()
      {
  
          DrawDefaultInspector(); // for other non-HideInInspector fields
          if (GUI.changed)
          {
              if (model.name != script.modelMesh.name)
              {
                  model = script.modelMesh;
                  int totalMaterials = model.GetComponent&lt;MeshRenderer&gt;().sharedMaterials.Length;
                  Array.Resize(ref script.weaponTextureMaps, totalMaterials);
                  int i = -1;
                  foreach (Material mat in model.GetComponent&lt;MeshRenderer&gt;().sharedMaterials)
                  {
                      i++;
                      script.weaponTextureMaps[i].material = mat;
                  }
  
              }
          }
          int ii = -1;
          foreach(WeaponTextureMaps wtm in script.weaponTextureMaps)
          {
              ii++;
              if (wtm.hasEmission == true)
              {
                  script.weaponTextureMaps[ii].emissionMap = EditorGUILayout.ObjectField("Emission Map", script.weaponTextureMaps[ii].emissionMap, typeof(Texture), true) as Texture;
              }
          }
      }
  }
  #endif
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/2ohv1.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2ohv1.png" alt="enter image description here"></a></p>
  
  <p>When I click "Has Emission" the hidden field should appear inside "Element 0" below the button "Has Emission" it self.</p>
  
  <p>However it appears outside of "Element 0" instead to be inside. How Can I fix that ?</p>
  
  <p>How can I make the hidden field to appear inside it's element?</p>