Jump to content
UnitySpain
Sign in to follow this  
gregory gregory

dudas sobre la posición de los UI

Recommended Posts

hola amigos he estado buscando por un largo rato  sobro las posiciones de los UI pero no he podido encontrar bien la posicion de los UI,  en el script que he hecho solo toma el transform por así decir y creo que los UI por lo que entiendo trabaja con RectTransform      "pos x pos y  pos z o  left y top" en lo que trata de las posiciones del canvas creo que es así, si  no  corríjanme si me equivoco    bueno el punto es que en el script la posición la toma de la escena y yo quiero que tome la posición  dentro del canvas sin que pierda la  posición por la resolución oh bueno  solo la primera que tome la posición dentro  canvas  la UI que quiero que tenga una posición en el script es un Text  bueno agradecería mucho que me ayudaran  

public RectTransform rect1;

public string nombreGO;

public float x=40f;
public  float y=0f;

void Start () {

}

void Update () {
       
        rect1=GameObject.Find(nombreGO).GetComponent<RectTransform>();
        rect1.anchoredPosition = new Vector2(x, y);
    }
}

 

Edited by pioj
uso de tags y <> para pegar código.

Share this post


Link to post
Share on other sites

Primero de todo, asegúrate que el render mode del canvas es Screen Space Overlay. Después, las cosas están dentro de un canvas tienen una alineación en el rect transform, para asignarla por script debes usar anchorMin, anchorMax y pivot. Para alinearlo en el centro sería así: 

    rect1.anchorMin = new Vector2(0.5f, 0.5f);
    rect1.anchorMax = new Vector2(0.5f, 0.5f);
    rect1.pivot = new Vector2(0.5f, 0.5f);
	rect1.anchoredPosition = new Vector2(x, y);

Espero que con esto lo soluciones.

 

Dos cosas importantes de tu código:

- No debes meter un Find y GetComponent en el Update. La primera linea del update puede ir al Start sin problemas, si ya lo has buscado una vez para que quieres buscarlo en cada frame? La variable ya está asignada.

- Si no vas a modificar la posición del elemento durante toda la partida, lo normal es que asignar la posición también vaya en el start (aunque si fuera así lo lógico sería ajustar la posición desde el editor y listos...)

 

Saludos

Share this post


Link to post
Share on other sites

ok gracias es que trato de hacer es que el UI se posicione en un lugar determinado en cierto tiempo  y lo del update es eso muchas gracias amigo por ayudarme en este problema que tenia :6_smile:

Edited by gregory gregory

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...