Exemple #1
0
    /*************************************************************************************************************************Función "Start"***************************************************************************************************************************/
    /// <summary>
    /// Primero instancio el constructor de la clase "_ClassController" para utilizar su
    /// variable "ReadOnly". Luego, dependiendo de las variables llamadas "randomComponent" y
    /// "numberOfCubes" se crearán cubos y se les asignara un script al azar, la creacion esta
    /// dentro de un bucle "for". Por último, con los bucles foreach se cuenta la cantidad de
    /// zombies y de ciudadanos para poderlos imprimir el la UI.
    /// </summary>
    void Start()
    {
        _ClassController cl = new _ClassController();

        numberOfCubes   = Random.Range(cl.minCubes, MAXCUBES);
        randomComponent = 0;

        for (int i = 0; i <= numberOfCubes; i++)
        {
            GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
            go.transform.position = new Vector3(Random.Range(-30, 30), 0, Random.Range(-30, 30));

            if (randomComponent == 0)
            {
                go.AddComponent <Hero>();
                go.AddComponent <Rigidbody>();
                citizenList.Add(go);
            }
            else if (randomComponent == 1)
            {
                go.AddComponent <Zombie>();
                go.AddComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;
                zombieList.Add(go);
                randomZombie = Random.Range(0, 2);

                if (randomZombie == 1)
                {
                    go.transform.localScale = new Vector3(1, 2, 1);
                }
            }
            else if (randomComponent == 2)
            {
                go.AddComponent <Citizen>();
                go.AddComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;
                citizenList.Add(go);
            }

            randomComponent = Random.Range(1, 3);
        }

        foreach (GameObject z in zombieList)
        {
            if (z.GetComponent <Zombie>())
            {
                zo.text = "Number of zombies: " + (numberZombies += 1);
            }
        }
        foreach (GameObject c in citizenList)
        {
            if (c.GetComponent <Citizen>())
            {
                ci.text = "Number of citizens: " + (numberCitizens += 1);
            }
        }
    }
    public Text ci;                                                                                 //Creo una variable a la cual añadir el texto del ciudadano.
    /************************************************************************************************************************Funcion "Start"************************************************************************************************************************/
    void Start()
    {
        _ClassController cl = new _ClassController();                                               //Llamo la clase que contiene el contructor necesario para cambiar la variable "ReadOnly".

        numberOfCubes   = Random.Range(cl.minCubes, MAXCUBES);                                      //Inicializo "numberOfCubes" a un valor aleatorio entre 10 y 21, esto definirá la cantidad de cubos que se creen, lo mínimo será 10 y el máximo 20.
        randomComponent = 0;                                                                        //La variable "randomComponent" se inicializa a cero.

        for (int i = 0; i <= numberOfCubes; i++)                                                    //Se hace el bucle con la siguiente condición: "i" = 0, hasta que sea menor a "numberOfCubes" vaya aumentando en uno.
        {
            GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);                         //Creo una variable de tipo "GameObject" llamada "go" para almacenar el cubo que se crea después del "=".
            go.transform.position = new Vector3(Random.Range(-30, 30), 0, Random.Range(-30, 30));   //Luego decimos que la posición de "go" será igual a una nueva posición con el "Vector3" y entre paréntesis le damos un valor a X, Y, Z. De los cuales y será cero, y los demás serán valores aleatorios entre -20 y 20.

            if (randomComponent == 0)                                                               //En un principio "randomComponent" es igual a 0, así que en la primera vuelta de bucle entrará a este condicional.
            {
                go.AddComponent <Hero>();                                                           //Al cubo "go" que se acabó de crear se le agrega el componente llamado "Hero" que es una clase.
                go.AddComponent <Rigidbody>();                                                      //Al cubo "go" que se acabó de crear se le agrega el componente llamado "RigidBody".
                citizenList.Add(go);
            }
            else if (randomComponent == 1)                                                          //Cuando el valor almacenado en "randomComponent" sea igual a 1, entrará en este condicional.
            {
                go.AddComponent <Zombie>();                                                         //Al cubo "go" que se acabó de crear se le agrega el componente llamado "Zombie" que es una clase dentro de la directiva "NPC.Enemy".
                go.AddComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;    //Al cubo "go" que se acabó de crear se le agrega el componente llamado "RigidBody" y le doy verdadero a la rotación para que no se de la vuelta.
                zombieList.Add(go);
            }
            else if (randomComponent == 2)                                                          //Cuando el valor almacenado en "randomComponent" sea igual a 2, entrará en este condicional.
            {
                go.AddComponent <Citizen>();                                                        //Al cubo "go" que se acabó de crear se le agrega el componente llamado "Citizen" que es una clase dentro de la directiva "NPC.Ally".
                go.AddComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;    //Al cubo "go" que se acabó de crear se le agrega el componente llamado "RigidBody" y le doy verdadero a la rotación para que no se de la vuelta.
                citizenList.Add(go);
            }
            randomComponent = Random.Range(1, 3);                                                   //Por último, después de verificar todos los condicionales "if" anteriores, se cambia el valor de "randomComponent" para la próxima vuelta del bucle.
        }


        //////
        foreach (GameObject z in zombieList)                                                        //Creo un "foreach" y entre paréntesis digo: para cada objeto "gos" (Nombre que le dí a dichos objetos) en la lista hacer:
        {
            zo.text = "Number of zombies: " + (numberZombies += 1);                                 //El texto de "zo" cambia por lo que esta después del igual.
        }

        foreach (GameObject c in citizenList)
        {
            ci.text = "Number of citizens: " + (numberCitizens += 1);
        }
    }