Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Unir un script con otro script

Iniciado por neiro, Agosto 02, 2015, 07:16:12 PM

Tema anterior - Siguiente tema
Verán si tengo en un código de c# un public void creado y quiero que otro script realice esa función que debo hacer, mi ejemplo es si tengo en un script que se active un texto y se desactive y en el otro script (aqui la duda) como uno el void en el if del otro script.

Agosto 02, 2015, 08:41:36 PM #1 Ultima modificación: Agosto 02, 2015, 08:42:39 PM por ftejada
Lo primero que tienes que hacer es crear una variable del primer script, en el segundo script para poder acceder a dicha funcion que quieres ejecutar.
//Esto se pondria en el script que va a utilizar la funcion del otro script

//Creamos la variable fuara de todas las funciones pero dentro de la clase
NombreScriptQueTieneLaFuncionAEjecutar   mScript;
Ahora debes saber es si ambos script estan en mismo gameObject o no..... ya que si está en el mismo gameObject que el primer script se llamaria de forma distinta a si estan en distintos gameObjects
//Cualquiera de las dos opciones iria dentro de la funcion Start()

//Si estan en el mismo gameObject
mScript = this.GetComponent<NombreScriptQueTieneLaFuncionAEjecutar>();

//Si estuviesen en distintos GameObjects
mScript = GameObject.Find("nombre del gameobject que contiene el script").GetComponent<NombreScriptQueTieneLaFuncionAEjecutar>();
Ahora ya puedes acceder a la funcion que querias desde este script... y operar con ella
mScript.LaFuncionQueQueriasEjecutar();
 Saludos. 

vuelve a leer lo que tu mismo has escrito a ver si entiendes tu propia duda; es posible que la explicacion a lo que quieres hacer sea muy sencilla, pero yo me he perdido (menos mal que son apenas 2 linias lo que has escrito). para facilitar que te puedan ayudar, intenta exponer la situacion y lo que necesitas de un modo que se entienda

[quote author=ftejada" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15879" data-ipsquote-contentcommentid="101077">Lo primero que tienes que hacer es crear una variable del primer script, en el segundo script para poder acceder a dicha funcion que quieres ejecutar.
//Esto se pondria en el script que va a utilizar la funcion del otro script//Creamos la variable fuara de todas las funciones pero dentro de la clase
NombreScriptQueTieneLaFuncionAEjecutar   mScript;
Ahora debes saber es si ambos script estan en mismo gameObject o no..... ya que si está en el mismo gameObject que el primer script se llamaria de forma distinta a si estan en distintos gameObjects
//Cualquiera de las dos opciones iria dentro de la funcion Start()

//Si estan en el mismo gameObject
mScript = this.GetComponent<NombreScriptQueTieneLaFuncionAEjecutar>();

//Si estuviesen en distintos GameObjects
mScript = GameObject.Find("nombre del gameobject que contiene el script").GetComponent<NombreScriptQueTieneLaFuncionAEjecutar>();
Ahora ya puedes acceder a la funcion que querias desde este script... y operar con ella
mScript.LaFuncionQueQueriasEjecutar();
 Saludos. [/quote]veo que la gente acostumbra a usar los getcomponent, he leído que consumen muchos recursos, no es mejor poner la variable como pública y asignarla desde unity?saludos.

Cita de: o0Charly0o date=1438548373" data-ipsquote="" data-cite="o0Charly0o" class="ipsQuoteveo que la gente acostumbra a usar los getcomponent, he leído que consumen muchos recursos, no es mejor poner la variable como pública y asignarla desde unity?saludos.
la verdad es que lo desconozco....


Vamos no me jodas, de toda la vida de dios use el getcomponent porque Unity lo hacía en sus tutoriales siempre así y en los códigos de ejemplo, y en los tips tampoco lo decían. Gracias por el link
Enviado desde mi SM-N910F mediante Tapatalk

pues vaya, que lio xD, puede que sea un detalle más importante a la hora de trabajar para dispositivos móviles, a lo mejor en una consola o en un pc, no da problemas el getcomponent, digo yo... saludos.

Todo depende de como utilices el GetComponent, yo por mi parte no tengo niguna perdida de rendimiento al utilizar tal.

Y como mides si tienes pérdida de rendimiento o no?
Enviado desde mi SM-N910F mediante Tapatalk

como dice @GSG3D todo depende como lo utilices, si lo haces en la funcion Start y guardas el componente en una variable ya lo puedes utilizar en cualquier momento sin tener que hacer mas GetComponent (como si lo hubieras puesto desde el inspector). en cambio si el GetComponent lo utilizas en la funcion Update pues claro que te bajara el rendimiento, pero incluso poniendo un simple Debug.Log en el Update te baja el rendimiento.

En el primer artículo se ve la diferencia en milisegundos, @mrpacogp.Bueno es saberlo, aunque por utilizarlo una vez no se nota jaja

Eso ya lo se yo de sobra, asignar variables de cualquier tipo en el awake, pero para no demorar la carga del mapa 1 hora habrá que medir las pruebas con test como los link que aportan, no con suposiciones.
Enviado desde mi SM-N910F mediante Tapatalk

entonces entiendo que consume más, quizas las buenas practicas de getcomponent dependan del contexto en el que lo vayamos a usar.
Gracias por contestar a todos y perdon por el off topic :P.
saludos.

Etiquetas: