Noticias

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

Ayuda con Variables de diferentes Script

Iniciado por josesito1432, Septiembre 10, 2016, 04:23:20 PM

Tema anterior - Siguiente tema


soy muy nuevo en esto, y tengo una duda que no la puedo resolver, lo intentare de describir de la mejor forma posible,

Tengo 2 escript C#  ScriptA y ScriptB
 


 
 


ScriptA
 


tiene las siguientes variables
 


ancho=200
 


largo=100
 


--------------------------------
 


ScriptB
 


cambiar desde aca el valor de la variable ancho que esta dentro del ScriptA
 


 
 


en resumen tengo un script que hace algo y tengo otro script en otro objeto y quiero que el otro objeto cambia la variable del primer objeto que esta dentro del primer script,,,, me podrian dar un ejemplo cortito rapido y consiso??? si lo explican estaria muy agradecido pero cualquier cosa me vendria bien....... desde ya muchas gracias


Septiembre 10, 2016, 07:46:42 PM #1 Ultima modificación: Septiembre 10, 2016, 07:47:20 PM por hammer
http://www.unityspain.com/search/?type=all&q=acceder+variable+otro+script
 
Esta pregunta se resuelve una vez al mes mas o menos XD XD ahhahaha.
 
Resumen rapido: GetComponent();,si el componente(script) esta en otro gameobject tendras que hacer primero la busqueda,tienes por ejemplo FindGameObject() o FindGameObjectWithTag() o asignandolo a una variable GameObject desde el inspector,esto suelen ser las maneras mas utilizadas.
 
Salu2!!!

buen mil gracias, realmente no me sirvio mucho sino que me creo mas dudas, si no te molesta y te animas y tenes tiempo a explicarmelo mejor quisas tambien podemos armar algunas imagenes de ayuda para compartir con todos y algunos ejemplo o presentaciones en power point asi demostramos mas rapidamente como se deberia ahcer, si alguien mas esta dispuesto a proporcionar su aporte............... mi idea seria crear un tutorial con pequeños ejemplos con imagenes y casos 

Septiembre 10, 2016, 08:19:32 PM #3 Ultima modificación: Septiembre 10, 2016, 08:20:52 PM por hammer
Pues no creo que el tema de para hacer un powerPoint XD XD
 
Sabiendo lo que te he dicho puedes abrir la ayuda de unity,buscar las funciones que te he dicho,y ahi te vienen ejemplos de scripts de como se utiliza,mientras lo escribes el compilador te va a mostrar las opciones que tiene tambien,a parte que en el  enlace qu te he puesto esta explicado varias veces y de varias formas.
 
Es muy simple
 
nombre objeto A: coche1.
 
script objeta A:Script_coche1
 
nombre objeto B: coche2
 
script objeto B: Scrip_coche2
 
 
 
pues si quieres acceder del script 1 al script 2 que esta en otro objeto,primero hay que buscar el objeto y meterlo dentro de una variable,es como una referencia,luego desde esa referencia le haces un GetComponent para coger el componente que quieras de ese objeto,y ya esta
 

GameObject objetoB;
Script_Coche2 scriptB;
void Start(){
//Busqueda por nombre
objeto2 = GameObject.FindGameObject("Coche2");
//o si lo quieres bucar por tag
objeto2 = GameObject.FindGameObjectWithTag("Aqui el tag que le hayas asignado en el inspector de unity");
script2 = objeto2.GetComponent<Script2>();
}

 
te lo he puesto en el start,pero lo puedes hacer donde quieras update(),Awake(),OncollisionEnter();
 
Tranqui que al principio cuesta,como todo, acomodar toda la informacion que vemos y que se nos despierte el 6º chackra.En la pagina oficial de unity tienes muchos tutoriales para cuando empiezas,o si no por youtube hay en español,te recomindo mucho que sigas alguno y veras como ya entiendes el funcionamento basico del programa,alguno de hacer un proyecto pequeño,flappy bird,space invaders,endless run el que mas te guste.Es que el tema del GetComponent no tiene mucho misterio,no sabria como explicarlo mas xD,si ahora no lo estas entendiendo, es por que no entenderas aun otros temas,asignar tags,Start,Update.
 
Si no encuentras ninguno dilo y te buscamos alguno,en serio los haras en una tarde y te ayudaran a saber como funciona toda la base, ha partir de ahi,o incluso si no pillas algo del tutorial,pregunta sin miedo que por aqui estaremos unos cuantos.
 
 
 
Saludos!

Como dice Hammer creo que he respondido a esta pregunta 3 veces en menos de un mes, te paso los enlaces de los post donde se responde para no estar repitiendo una y otra vez lo mismo.

 
 

Hola a todos, quiero comentarles que llegue a encontrar lo que buscaba y que nadie supo como explicarlo y cabe aclarar que en ningun tema de los que vi en el buscador encontre la solucion por que las explicaciones era enfocadas a un caso en especial y no habia explicaciones extras, pero bueno estare preparando un power point o pequeñas dudas en estos dias cuando me sobre un tiempito asi con simple power point explicar bien y sacar las dudas de como usar las variables a la hs de por ejemplo alterar una variable que esta dentro de otro script de otro objeto o simplemente dentro de otro componente de otro objeto o de un script a otro script de un mismo objeto o de script a componente de un mismo objeto o casos asi. para que quede bien explicado de igual manera gracias por su ayuda. y si apoyo 

Noviembre 15, 2016, 04:31:49 AM #6 Ultima modificación: Noviembre 15, 2016, 04:34:41 AM por lightbug
Hola, no existe casos especificos, es todo relativo al lenguaje que estas usando, osea cuando creas tu script estas creando una clase, si pones que la variable "ancho" por ej sea publica, podes desde cualquier lado obtener el componente que tiene el script que tiene dicha clase y modificarla. Aunque yo prefiero usar metodos publicos que modifiquen las variables que tenga la clase (pueden ser privadas), pero el metodo publico pertenece a la clase que queres modificar por eso este puede hacer, desde fuera no se puede a no ser que sean publicas.
 
Script A:
 

public class ClaseA : MonoBehaviour {
int meVanAtocar;
public void FuncionTocadora(int valor){
   meVanAtocar = valor;
}
}

 
y en el Script B:
 

public class ClaseB : MonoBehaviour {
ClasaA claseA;
public GameObject objetoquetieneElScriptA; //lo haces publico y lo elegis en el inspector , para probar que ande, en runtime lo elegis como quieras


void Start()
{
   claseA = objetoquetieneElScriptA.GetComponent<ClaseA>();
}
   
    void Update()
    {
   claseA.FuncionTocadora(14);
        //si el int mevanatocar fuera public podes directamente hacer:
         //     claseA.meVanAtocar = 14;
    }
}

Etiquetas: