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.
//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/aaff8213ea4aef432755ceacc4f04a8d (https://gyazo.com/aaff8213ea4aef432755ceacc4f04a8d)He puesto esto-Script01: https://gyazo.com/b90f4b3aeaff926cdbe60b8345cb714f (https://gyazo.com/b90f4b3aeaff926cdbe60b8345cb714f)-Script02: https://gyazo.com/bbd22497c2c051c92ad2096e82b3db2a (https://gyazo.com/bbd22497c2c051c92ad2096e82b3db2a)
Cita de: brok date=1448732180" data-ipsquote="" data-cite="brok" class="ipsQuote">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 (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;
}
} (//<fileStore.core_Attachment>/monthly_2015_11/Screen_Shot_2015-11-28_at_10.15.14_AM.png.e38e8ee598ff0f171c0418c5963477b5.png) 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;
}
}
Sólo texto | Texto con Imágenes