Jump to content
Sign in to follow this  
JorgeLi

Llamar un GameObject desde otro script

Recommended Posts

Hola,

Mi problema es el siguiente, quiero que cuando pase algo me muestre en pantalla un game object.

Pare eso tengo un script1 que recoge la condición del tipo de gameObject (en este caso lo llamaremos enemigo) que me va a mostrar. Y luego tengo otro script2 con 3 public GameObjects.

La coas es que quiero que el script1 coga el gameObject del script2. Pero no se si lo estoy hacindo bien.

El script1 llama al script2 y en la condición estoy poeniendo lo siguiente:

public Script2 script2;


public void Enemies()
    {
        //Now check the y varibale that has the number for the tipeOfEnemy
        switch (cameraCheck.planeNum)
        {
			case 1: //Aquí llamo al gameObject que contiene el tipo de enemigo
				script2.GetComponent<GameObject>().Enemigo01;
				enemiCharacter = 1;
				break;

            //A este no le hagais caso      
			case 2:
				enemiCharacter = 2;
				break;

        }

	}

Creo que no estoy poniendo bien la nomenclatura.

Si alguien sabe como hacerlo se lo agradecería.

Saludos y gracias de antemano.

Edited by JorgeLi

Share this post


Link to post
Share on other sites

A lo mejor no te estoy entendiendo, pero si desde script1 tienes una referencia a script2 y en script2 tienes definidos los GameObjects como public sólo tienes que poner: script2.NombreObjeto.

No tienes que recuperar ningún componente....

 

 

Share this post


Link to post
Share on other sites

te falta () al final de enemido01 , con todo también esta mal estructurado, hay varias maneras de llamar a un evento.Te pongo uno simple sin usar los Tag, de esta manera podrás llamar cualquier evento del Game object desde el activador del script1.

// SCRIPT1 "EL ACTIVADOR"

public GameObject Objecto1;-------------// aquí enlazas en Objeto que tenga el script del evento "script2"

//Ejecutamos el triger para activarlo.
    Objecto1.GetComponent<script2>().Enemigo01();


// SCRIPT2 "EL EVENTO"

public Float enemycharacter;


public void Enemies01()-------------// aquí pones el evento.
    {  
      Enemycharacter =1;
    }

No estoy seguro si te referías a esto exactamente,peor creo que esto debería de servirte para lo que tenias en mente ^^'

  • Like 1

Share this post


Link to post
Share on other sites

Hola JorgeLi.

 

Yo creo que el script que has compartido, no funcionaría, observando esta línea:

script2.GetComponent<GameObject>().Enemigo01;

"script2" es el objeto tipo "Script2", quizás este tipo Script2 tenga alguna variable pública tipo llamada "Enemigo01", pero esta línea, esta buscando el componente "GameObject" que hay asociado al objeto script2, y luego está buscando la variable Enemigo01 dentro de la clase Gameobject, el cual no existe. 

Enemigo01 está dentro la clase Script2, no dentro de la clase GameObject.


También, estás intentando acceder a la variable Enemigo01, pero no estás haciendo nada con ella, (no la estás pasando a ninguna variable local ni la estás pasando como parámetro a ninguna función).

 

 


Has dicho que quieres el script1 (el que has compartido) coja el "GameObject del script2"  Pero, luego buscas un "Enemigo01", ¿qué es este Enemigo01?  

Para coger el GameObject que incluye el el Script2 (referenciado por script2) puedes usar el getcomponent como estabas usando.:

GameObject GOrecogido = script2.GetComponent<GameObject>();

Si lo que quieres es coger Enemigo01 (imagino que será una variable tipo GameObject ya inicializada), bastaría con transferirla.

GameObject GOrecogido = script2.Enemigo01;

 

Así se podría coger, pero recuerda que las variables locales se eliminan al acabar su dominio, ¿para qué quieres ese "Gameobject del script2"? ¿es algo sólo para esa función o lo usará también otras funciones diferentes a "Enemies()"? ¿es algo para usarlo continuamente o es una información que sólo vas a usar en ese momento puntual?  Dependiendo de la respuesta, puede que quieras declarar "GameObject GOrecogido" en un sitio u otro.

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...