glantucan / puzzle_game

A small Unity basics review example and start point to go to a modular design
1 stars 1 forks source link

Arrays y listas ejercicio 11 #11

Open WerderAntoine opened 7 years ago

WerderAntoine commented 7 years ago

Como pides en el enunciado he creado dos scripts, uno que crea las esferas (scriptA) y otro que le da la dirección(scriptB). Mi problema llega cuando tengo que decir desde el script principal que cambie de dirección cada dos segundos. En el scriptB he creado esta función:

public void ChangeDirection(){
    randomDirection = Random.insideUnitSphere * 3;
}

Y para llamarlo desde el scriptA he usado BroadcastMessage asi:

if (timer > timeToWait) {
    for (int i = 0; i < 20; i++) {
        arrayEsferas [i].BroadcastMessage("ChangeDirection");
    }
    timer = 0;
}

Mi pregunta es si podemos usar BroadcastMessage.

WerderAntoine commented 7 years ago

He conseguido solucionarlo usando:

arrayEsferas [i].GetComponent<Esfera> ().ChangeDirection ();

Pero me gustaría saber la diferencia entre usar uno y otro método.

glantucan commented 7 years ago

Respuesta rápida y fácil. El primero no lo hemos visto en clase ;P Te puede parecer una tontería, pero si encontrais algo que no lo hemos visto en clase y yo no os he pedido explícitamente que lo busquéis o investigueis por vuestra cuenta, no lo useis. Sin embargo, GetComponent<>() lo hemos usado ya un montón de veces.

Hay varias razones por las que no os he ensañado a usar el BroadcastMessage, la más importante de ellas es que sólo funciona para llamar a funciones que están en scripts que están como componente en el mismo gameobject. Pero hay muchas otras: No se le pueden pasar parámetros a las funciones, es lento, y no lo usa nadie, entre ellas.