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);
        }
    }
示例#3
0
    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;
            }
        }
    }