Noticias

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

Acceso a variables

Iniciado por R3N3, Enero 18, 2016, 03:06:56 PM

Tema anterior - Siguiente tema
Hola comunidad, necesito ayuda con el acceso a las variables de los scripts ajenos al objeto que desee acceder a estos. Esta forma que les pondré aquí ahora la han usado en tutoriales que he hecho, incluso la he utlizado otras veces y me  funciona. El caso es que ahora me da error y no es laprimera vez, solo que antes optaba por otra vía; pero si mi intención es aprender tengo resolver esto, espero me puedan ayudar, gracias.for(var go : GameObject in activadores){
         if(activadores.length != 0){
          var script1  =  go.GetComponent("ActivarMeteoro");
//esto lo hace bien me imprime el nombre del script, es decir lo encuentra, pero...
          print(script1.name);
//esto me da error, la variable posFinalP no es miembro de Component
      print(script1.posFinalP);
        }
        }PD: Ya he probado poner a variable static y nada, no entiendo por qué lo de Component, se supone que ta guardé el componente de tipo script en script1
y lugo puedo acceder a sus vriables.

Yo de Javascript no sé, pero como no veo que tengas ninguna respuesta, intento ayudarte.Estás buscando objetos del tipo GameObject y el miembro posFinalIP pertenece a un objecto de clase ActivarMeteoro. Lo que tienes que hacer es buscar ese tipo de objetos o realizar un casting (que no sé si va a funcionar en js) sobre el script1.

asi es como dice el amigo iRobb, ocupas buscar el tipo de objecto , o castear ( ser tratado como determinado tipo de objecto ) , entonces tu problema radica en la forma de obtener el componenteal usar comillas estas buscando un componente con ese nombre pero hasta ahi, digamos que estas comprobando si existe o no ese componente,ahora si lo que quieres es obtener el script , necesitas buscar un objeto de ese tipo de estas formas:var script1  =  go.GetComponent.< ActivarMeteoro>(); var script1  =  go.GetComponent( ActivarMeteoro);o bien castear el componente obtenido como tu lo tienes: var script1  =  go.GetComponent("ActivarMeteoro") as ActivarMeteoro;aprovechando que estamos aqui, no es necesario que tengas el if dentro del foreach preguntando si es diferente a 0 el tamanio de la lista, si es 0 jamas entrara al foreach, asi que puedes omitir esas lineas. saludos!!! 

Etiquetas: