I have this code that uses some editor to create controls:
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button("Add obstacles"))
{
ArrayUtility.Add(ref m_Segment.obstaclePositions, 0.0f);
}
if (m_Segment.obstaclePositions != null)
{
int toremove = -1;
for (int i = 0; i < m_Segment.obstaclePositions.Length; ++i)
{
GUILayout.BeginHorizontal();
m_Segment.obstaclePositions[i] = EditorGUILayout.Slider(m_Segment.obstaclePositions[i], 0.0f, 1.0f);
if (GUILayout.Button("-", GUILayout.MaxWidth(32)))
toremove = i;
GUILayout.EndHorizontal();
}
if (toremove != -1)
ArrayUtility.RemoveAt(ref m_Segment.obstaclePositions, toremove);
}
if (GUILayout.Button("Add platform"))
{
ArrayUtility.Add(ref m_Segment.platformPositions, 0.0f);
}
if (m_Segment.platformPositions != null)
{
int toremove = -1;
for (int i = 0; i < m_Segment.platformPositions.Length; ++i)
{
GUILayout.BeginHorizontal();
m_Segment.platformPositions[i] = EditorGUILayout.Slider(m_Segment.platformPositions[i], 0.0f, 1.0f);
if (GUILayout.Button("-", GUILayout.MaxWidth(32)))
toremove = i;
GUILayout.EndHorizontal();
}
if (toremove != -1)
ArrayUtility.RemoveAt(ref m_Segment.platformPositions, toremove);
}
if (GUILayout.Button("Add decoration"))
{
ArrayUtility.Add(ref m_Segment.decorationPositions, 0.0f);
}
if (m_Segment.decorationPositions != null)
{
int toremove = -1;
for (int i = 0; i < m_Segment.decorationPositions.Length; ++i)
{
GUILayout.BeginHorizontal();
m_Segment.decorationPositions[i] = EditorGUILayout.Slider(m_Segment.decorationPositions[i], 0.0f, 1.0f);
if (GUILayout.Button("-", GUILayout.MaxWidth(32)))
toremove = i;
GUILayout.EndHorizontal();
}
if (toremove != -1)
ArrayUtility.RemoveAt(ref m_Segment.decorationPositions, toremove);
}
}
but when adding platform, decoration etc the editor seems to fail to notice these changes, and does not save or ask me to save unless I change some more “standard” values in the editor, like a public int value. How to fix that?