Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ignacio en Febrero 07, 2016, 11:36:34 PM

Título: duda sobre rect transfrom
Publicado por: ignacio en Febrero 07, 2016, 11:36:34 PM
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 
Título: duda sobre rect transfrom
Publicado por: iRobb en Febrero 08, 2016, 12:16:30 AM
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.
Título: duda sobre rect transfrom
Publicado por: ignacio en Febrero 08, 2016, 12:36:03 AM
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?
 (//<fileStore.core_Attachment>/monthly_2016_02/invt.png.863d31ff6b5bd9085c0287f05f456afe.png)
el slot no tiene ningún codigo
 (//<fileStore.core_Attachment>/monthly_2016_02/slot.png.36f8187a39ce4b3a1f8452f1f2197421.png)
Título: duda sobre rect transfrom
Publicado por: iRobb en Febrero 08, 2016, 06:18:39 AM
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.
Título: duda sobre rect transfrom
Publicado por: ignacio en Febrero 08, 2016, 06:54:14 AM
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 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);

         }

      }



 }
}
 
Título: duda sobre rect transfrom
Publicado por: iRobb en Febrero 08, 2016, 11:20:42 AM
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.