public override void OnInspectorGUI() { ClasseTest script = (ClasseTest)target; script.NumMissoes = EditorGUILayout.IntField("Numero de Missoes", script.NumMissoes); // Ensure it cannot go into negative numbers. if (script.NumMissoes < 0) { script.NumMissoes = 0; } // Create the list if it does not exist. if (script.MissoesJogasso == null) { script.MissoesJogasso = new List <ClasseTest.Missoes>(); } // numMissoes being greater than the current count means we need to extend the list. if (script.NumMissoes > script.MissoesJogasso.Count) { for (int i = 0; i < script.NumMissoes; i++) { script.MissoesJogasso.Add(new ClasseTest.Missoes()); } } // numMissoes being less than the current count means we need to decrease the list. else if (script.NumMissoes < script.MissoesJogasso.Count) { int difference = script.MissoesJogasso.Count - script.NumMissoes; // Remove the last element difference number of times. for (int i = 0; i < difference; i++) { script.MissoesJogasso.RemoveAt(script.MissoesJogasso.Count - 1); } } var serializedTarget = new SerializedObject(target); for (int i = 0; i < script.MissoesJogasso.Count; i++) { var missoes = script.MissoesJogasso[i]; switch (missoes.TiposMissoes) { case ClasseTest.TiposDeMissoes.TipoMatarGente: missoes.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Matar Gentes", missoes.TiposMissoes); DrawProperty(serializedTarget, string.Format("MissoesJogasso.Array.data[{0}].MatarGente", i)); break; case ClasseTest.TiposDeMissoes.TipoPegarItem: missoes.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Pegar Item", missoes.TiposMissoes); DrawProperty(serializedTarget, string.Format("MissoesJogasso.Array.data[{0}].PegarItem", i)); break; } } }
public override void OnInspectorGUI() { ClasseTest script = (ClasseTest)target; int numMissoes = EditorGUILayout.IntField("Numero de Missoes", numMissoes); EditorGUILayout.LabelField("Editante"); var serializedObject = new SerializedObject(target); var property = serializedObject.FindProperty("MissoesJogasso"); serializedObject.Update(); EditorGUILayout.PropertyField(property, true); serializedObject.ApplyModifiedProperties(); // numMissoes being greater than the current count means we need to extend the list. if (numMissoes > script.MissoesJogasso.Count) { // The number of new elements to create. int difference = numMissoes - script.MissoesJogasso.Count; // Create the new elements. for (int i = 0; i < difference; i++) { script.MissoesJogass.Add(new Missoes()); } for (int i = 0; i < numMissoes; i++) { var missoes = script.MissoesJogasso[i]; switch (missoes.TiposMissoes) { case ClasseTest.TiposDeMissoes.TipoMatarGente: missoes.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Matar Gentes", missoes.TiposMissoes); break; case ClasseTest.TiposDeMissoes.TipoPegarItem: missoes.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Pegar Item", missoes.TiposMissoes); break; } } } else { // We need to decrease the list by the difference (the number of elements to remove) int difference = script.MissoesJogasso.Count - numMissoes; // Calculate the starting index which is given by: total elements - (number of elements to remove + 1) // The plus one accounting for the Count property starting at zero. script.MissoesJogass.RemoveRange(script.MissoesJogass.Count - (difference + 1), difference); } }
public override void OnInspectorGUI() { ClasseTest script = (ClasseTest)target; script.NumMissoes = EditorGUILayout.IntField("Numero de Missoes", script.NumMissoes); // Ensure it cannot go into negative numbers. if (script.NumMissoes < 0) { script.NumMissoes = 0; } // numMissoes being greater than the current count means we need to extend the list. if (script.NumMissoes > script.MissoesJogasso.Count) { for (int i = 0; i < script.NumMissoes; i++) { script.MissoesJogasso.Add(new ClasseTest.Missoes()); } } // numMissoes being less than the current count means we need to decrease the list. else if (script.NumMissoes < script.MissoesJogasso.Count) { int difference = script.MissoesJogasso.Count - script.NumMissoes; // Remove the last element difference number of times. for (int i = 0; i < difference; i++) { script.MissoesJogasso.RemoveAt(script.MissoesJogasso.Count - 1); } } for (int i = 0; i < script.MissoesJogasso.Count; i++) { var missoes = script.MissoesJogasso[i]; switch (missoes.TiposMissoes) { case ClasseTest.TiposDeMissoes.TipoMatarGente: missoes.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Matar Gentes", missoes.TiposMissoes); break; case ClasseTest.TiposDeMissoes.TipoPegarItem: missoes.TiposMissoes = (ClasseTest.TiposDeMissoes)EditorGUILayout.EnumPopup("Pegar Item", missoes.TiposMissoes); break; } } }