Variedades de coordenadas utilizadas en la GUI de Unity3d

驴Por qu茅 variedades y cu谩ntas de ellas?


A menudo me encuentro con el hecho de que las personas simplemente no entienden c贸mo mover un objeto en la interfaz de usuario por alg煤n valor, y me sorprende que el resultado sea a menudo impredecible. O digamos c贸mo obtener las coordenadas correctas del objeto en la interfaz de usuario. Si obtenemos a trav茅s del depurador la posici贸n habitual del objeto (posici贸n), entonces ser谩 muy diferente de lo que vemos en el inspector del elemento UI, entonces, 驴qu茅 vemos all铆 y c贸mo funciona? Como resultado, hasta el momento se han ordenado 100.500 soluciones de foros, que no funciona. Quiero dar un movimiento significativo a tales procesos.

La esencia de la captura es la siguiente: la transformaci贸n habitual tiene un descendiente de RectTransform que es responsable de la posici贸n y muchas cosas relacionadas con el tama帽o, la escala, etc. del elemento de la interfaz de usuario. Y gracias a 茅l podemos obtener las siguientes opciones de coordenadas.

  1. posici贸n
  2. posici贸n local
  3. anclaredPosition (todav铆a hay anclaredPosition3D, pero no lo consideraremos por separado, pero suponemos que esta es una subespecie de test.anchoredPosition



Posici贸n normal


La posici贸n habitual no se aplica al sistema de coordenadas UI de la palabra en absoluto. Estas son algunas coordenadas comunes del objeto en todo el mundo de la unidad, y en el mundo hay una cierta representaci贸n de la posici贸n del objeto que no est谩 conectado a la interfaz. Si desea cambiar el objeto por su ancho, esto no funcionar谩, ya que el lienzo tiene coordenadas en p铆xeles en relaci贸n con la pantalla. Y en coordenadas globales, estos no son p铆xeles. Por lo tanto, el objeto cambiar谩 en el mundo, digamos 200 unidades del mundo, y no 200 p铆xeles, y simplemente volar谩 a distancias desconocidas. Pero se puede usar sabiamente. M谩s tarde te dir茅 c贸mo.

Posici贸n de anclaje (posici贸n anclada)


Lo que vemos en el inspector es lo que es.



En una unidad, puede establecer puntos de anclaje, este es un cierto punto en relaci贸n con el cual se colocar谩 el elemento de la interfaz de usuario, incluso cuando se cambian el tama帽o / las proporciones del objeto principal.



Aqu铆 puede ver que cambiamos el tama帽o del objeto principal y las proporciones, nuestro objeto se adhiere al centro del objeto principal y sus coordenadas no han cambiado, aunque en la pantalla ya no est谩 en el mismo lugar que antes.

Posici贸n del ancla: las coordenadas del objeto en relaci贸n con el ancla. Anclaremos en la esquina superior izquierda y veremos que las coordenadas han cambiado.



Si desea cambiar el objeto a su ancho, entonces necesita cambiar anclaredPosition o localPosition. La posici贸n local para los elementos de la interfaz de usuario tambi茅n se calcula en p铆xeles, pero de una manera diferente. Por lo tanto, si necesita manipular dos elementos de la IU relativos entre s铆. Es mejor usar una posici贸n local. Por qu茅

Posici贸n local (posici贸n local)


Entonces, 驴qu茅 es exactamente una posici贸n local:



Este es el sistema de coordenadas cuando el centro del objeto padre es 0. La esquina superior derecha es el ancho positivo del rect dividido por la mitad. La esquina superior izquierda es el valor negativo del ancho por la mitad. Es decir, si el ancho del rect谩ngulo es de 800 p铆xeles, entonces en el medio x = 0, en la esquina superior derecha 400, en la esquina superior izquierda -400. Por lo tanto, si necesita calcular las coordenadas sin tener en cuenta los anclajes, es mejor usar posiciones locales. Siempre que tengan un ancestro / rect谩ngulo com煤n. Por cierto, los anclajes se pueden usar no solo como un punto espec铆fico en el objeto principal, sino tambi茅n como una proporci贸n relativa al objeto principal. En el segundo caso, anclaredPosition devolver谩 localPosition.

驴Por qu茅 puedo usar la posici贸n habitual para los elementos de la interfaz de usuario? Digamos que, dentro de las coordenadas globales, si asigna las coordenadas del segundo a un objeto, estar谩n en el mismo punto, independientemente de sus anclajes o posiciones locales, a veces es conveniente cuando los elementos est谩n en diferentes lienzos / en diferentes paneles y el sistema de coordenadas es local / ancla no coinciden

Conclusi贸n / resumen


  1. En el inspector, los elementos de la interfaz de usuario muestran anclaredPosition o proporciones relativas al padre. La posici贸n anclada se considera dependiendo de la posici贸n del ancla
  2. localPosition le permite obtener las coordenadas generales relativas al padre, sin vincular a los anclajes.
  3. posici贸n: esta es la posici贸n global del elemento en el espacio de la escena, no vinculada a la interfaz de usuario.


Espero que alguien ayude :-)

Source: https://habr.com/ru/post/454246/


All Articles