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?
(//<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)
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
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.