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.anc***dPosition = new Vector2(x, y);
}
}
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.anc***dPosition = 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
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