Version: 2022.3
  • C#


Suggest a change


Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.


Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.




public bool NextVisible(bool enterChildren);


Move to next visible property.

using System;
using System.Text;
using UnityEngine;
using UnityEditor;

public class SerializePropertyNextVisible : ScriptableObject { public bool m_SeeMe1;

[HideInInspector] public bool m_HideMe1;

[SerializeField] private bool m_SeeMe2;

[HideInInspector] public bool m_HideMe2;

[MenuItem("Example/SerializedProperty NextVisible Example")] static void TestNextOnCyclicGraph() { var scriptableObject = ScriptableObject.CreateInstance<SerializePropertyNextVisible>(); using (var serializedObject = new SerializedObject(scriptableObject)) { var serializedProperty = serializedObject.GetIterator();

var sb = new StringBuilder(); sb.AppendLine("Visible Properties:");

// Move from the root to the first visible property bool visitChild = true; serializedProperty.NextVisible(visitChild);

// Rest of scan stays at same level visitChild = false; do { // Note: some properties from the supporting Unity base objects are exposed // (and visible in the inspector), for example "m_Script". sb.AppendLine(; } while (serializedProperty.NextVisible(visitChild));

/*Expected output m_Script m_SeeMe1 m_SeeMe2 */ Debug.Log(sb.ToString()); } } }