JorgeLi 2 Report post Posted March 31, 2020 (edited) 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 March 31, 2020 by JorgeLi Share this post Link to post Share on other sites
AngelFG 15 Report post Posted April 19, 2020 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
J4v1v1g2 29 Report post Posted April 19, 2020 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 ^^' 1 Share this post Link to post Share on other sites
Antonio 185 Report post Posted April 20, 2020 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