Noticias

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

duda sobre rect transfrom

Iniciado por ignacio, Febrero 07, 2016, 11:36:34 PM

Tema anterior - Siguiente tema
hola, que tal gente.me podrían ayudar y decirme por que es que este código no funciona
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class inventario : MonoBehaviour {
// Usa para crear los slot
public GameObject slots;

int x=-114;
int y=83;

void Start () {


   for (int i=0; i<3; i++)
      {
      for (int j=0; j<3; j++)
         {
         // Usa para crear los slot sin que sea necesario tener un prefab y le asigna las coordenadas
         GameObject slot=(GameObject)Instantiate(slots);
         slot.transform.parent=this.gameObject.transform;
         slot.GetComponents<RectTransform>().localposition = new Vector3(x,y,0);
         }

      }



 }
}
gracias 

Bueno, aunque el comentario diga que no se requiere un prefab, es un prefab (Instantiate) y si no lo es, mal.Por qué utilizas RectTransform? Va al Canvas? O sea, this.gameObject está en el Canvas? Si no es así, deberías utilizar transform.localposition.

retiro lo dicho respecto a el prefab.
agradezco tu ayuda y para responderte :

en este caso se accede a el rec trasfrom de el prefab propiamente dicho que no es mas que una imagen ui.
tendria que hacer uso del RectTransform o no?

el slot no tiene ningún codigo

Lo que decía, si es UI del Canvas, RectTransform. Pero no localposition, eso es para transform.Debes utilizar anc***dposition que utiliza los anchors del RectTransform para posicionarse y puedes pasarle un Vector2.

aun no lo he probado pero te refieres algo como esto: .GetComponent<RectTransform>().anc***dPosition = new Vector2(-125, 50);

ahora la interrogante que tengo es ¿ con eso diría la posición del prefab?
ya esta probado y ha funcionado; muchas gracias http://unityspain.com/profile/27231-irobb/?do=hovercard&referrer=http%253A%252F%252Funityspain.com%252Ftopic%252F35104-duda-sobre-rect-transfrom%252F" title="Go to iRobb's profile" id="ips_uid_7" style="box-sizing: border-box; color: inherit; text-decoration: none; background-color: transparent;" href="<___base_url___>/profile/27231-irobb/">iRobb por tu ayuda.

dejo como me quedo el código final , así de paso si a alguien le sirve se matan 2 pájaros de un tiro 
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class inventario : MonoBehaviour {
// Usa para crear los slot
public GameObject slots;

int xx=-114;
int yy=83;

void Start () {


   for (int i=0; i<3; i++)
      {
      for (int j=0; j<3; j++)
         {
         // Usa para crear los slot sin que sea necesario tener un prefab y le asigna las coordenadas
         GameObject slot=(GameObject)Instantiate(slots);
         slot.transform.parent=this.gameObject.transform;
         slot.GetComponent<RectTransform>().anc***dPosition = new Vector2(-114,80);

         }

      }



 }
}
 

El prefab es el gameObject antes de instanciarse. Una vez instanciado, puedes llamarlo ya gameObject instanciado p.ej. Algo para diferenciarlo.Si, claro que es la posición. Además, fíjate que si intentaras acceder a la posición del prefab (antes de instanciar eh) verás como te da valores extraños o 0.

Etiquetas: