Noticias

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

[Solucionado] Problema para acceder a variables en otro script

Iniciado por magicdidac, Noviembre 28, 2015, 06:15:13 PM

Tema anterior - Siguiente tema
Noviembre 28, 2015, 06:15:13 PM Ultima modificación: Noviembre 29, 2015, 12:22:01 AM por magicdidac
Buenos días, tardes, noches,Se que este tema ha sido tratado en otros posts pero no he logrado encontrar la solución a mi problema. Mi problema es que intento acceder des de un script a  una variable que está en otro script pero de otro objeto diferente, es decir,
//Script01(En un objeto)public float variableA = 1f; //Script02(En otro objeto distinto)public float variableB = 0f;public void Update(){Script01 variable = GetComponent<Script01> ();variableB = variable.variableA;}[/quote] No me sirve ya que esto funciona si los dos scripts estan en el mismo objeto. Soy nuevo en Unity y por ello no se como hacer eso. Cualquier ayuda será bienvenida.Gracias de antemano.

Lo mas rapido seria poner en el Start()
GameObject.Find("NombreDelObjeto").GetComponent.variable;
Pero crea un Transform public y arrastra ahi el objeto que contiene tu script...
Transform go; //lo arrastras en el inspector
go.GetComponent.........
Ademas revisa la documentacion de Unity que hay estan las mayorias de tus preguntas.

Noviembre 28, 2015, 06:36:20 PM #2 Ultima modificación: Noviembre 28, 2015, 06:52:00 PM por brok
//Script01(En un objeto)

public static float variableA = 1f;

 

//Script02(En otro objeto distinto)
Script01 variable;

public static float variableB = 0f;

public void Start(){

variable = GetComponent<Script01> ();

variableB = variable.variableA;

}
Asin creo que es mejor
//Script01(En un objeto)

public static float variableA = 1f;

 

//Script02(En otro objeto distinto)



public static float variableB = 0f;

public void Start(){



variableB = Script01.variableA;

}
Asin mejor

[quote author=brok" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34540" data-ipsquote-contentcommentid="124200">
//Script01(En un objeto)public static float variableA = 1f;

 Script01 variable;

//Script02(En otro objeto distinto)

public static float variableB = 0f;

public void Start(){

variable = GetComponent<Script01> ();

variableB = variable.variableA;

}
Asin creo que es mejor[/quote]Tal cual me lo pones tu me salen dos errores: https://gyazo.com/aaff8213ea4aef432755ceacc4f04a8dHe puesto esto-Script01: https://gyazo.com/b90f4b3aeaff926cdbe60b8345cb714f-Script02: https://gyazo.com/bbd22497c2c051c92ad2096e82b3db2a

Cita de: brok date=1448732180" data-ipsquote="" data-cite="brok" class="ipsQuote">
cabeza.No utilices el modificador de variables "static" como si lo regalaran porque esta pensado para casos concretos (no para cuando tengas que acceder a una variable desde otra clase). Y despues, el motivo por el que digo que costaria encontrar una solucion peor ... ya que haces la variable estatica para acceder desde otra clase, para que utilizas el GetComponent para acceder al componente del otro objeto ?Es algo asi como hacer una variable estatica por la facilidad de acceder a ella desde otra clase (aunque luego te pueda dar problemas de mayor resolucion) ... y despues utilizar la funcion GetComponent (con los recursos que consume) para acceder al script que es lo que intentabas evitar al hacerla estatica :S La verdad es que no tiene mucho sentido, es como si tienes hambre y piensas en hacerte un buen banquete pero despues de 1 hora cocinando dices "pues ahora tiro la comida y me quedo con el hambre" xD
								

reifico
//Script01(En un objeto)

public static float variableA = 1f;

 

//Script02(En otro objeto distinto)



public static float variableB = 0f;

public void Start(){



variableB = Script01.variableA;

}
 

[quote author=brok" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34540" data-ipsquote-contentcommentid="124203">reifico
//Script01(En un objeto)public static float variableA = 1f;

 

//Script02(En otro objeto distinto)



public static float variableB = 0f;

public void Start(){



variableB = Script01.variableA;

}
 [/quote]Ahora me sale este error: https://gyazo.com/fb55dfdf752fca61afb13e112b279073

hay diferentes formas de hacerlo este seria el script que quieres acceder:using UnityEngine;
using System.Collections;

public class script01 : MonoBehaviour {

    public float variableA = 1f;
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}
 y asi serian varias formas de acceder a el: pero yo te recomiendo que uses asignacion del scriptDirectamente de esta forma public class script02 : MonoBehaviour {
    public float variableB = 0f;
    public script01 variable;

    // Use this for initialization
    void Start () {

    }
    
    // Update is called once per frame
    void Update () {
    
        variableB = variable.variableA;
    }
}
   si la asignacion del script la necesitas dinamicamente, asi es otro show, platica un poco mas de lo que necesites. 

[quote author=ACarranza" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34540" data-ipsquote-contentcommentid="124205">hay diferentes formas de hacerlo este seria el script que quieres acceder:using UnityEngine;
using System.Collections;

public class script01 : MonoBehaviour {

    public float variableA = 1f;
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}
 y asi serian varias formas de acceder a el: pero yo te recomiendo que uses asignacion del scriptDirectamente de esta forma public class script02 : MonoBehaviour {
    public float variableB = 0f;
    public script01 variable;

    // Use this for initialization
    void Start () {

    }
    
    // Update is called once per frame
    void Update () {
    
        variableB = variable.variableA;
    }
}
 Screen_Shot_2015-11-28_at_10.15.14_AM.th

Etiquetas: