Estoy usando la Unidad 4.3.3 para mi juego. Estoy haciendo un juego para dispositivos Android y iOS. Ya que soy bastante nuevo para la unidad, me parece que no puede encontrar una manera de trabajar con resolución de pantalla diferente.
Estoy usando c# para mis scripts.

Quiero que mi juego para que se ejecute a pantalla completa. Lo he probado en el iPad 2 y funciona perfecto, pero para el iPhone 4 los lados se recortan y para el iPhone 5 que se recortan aún más. ¿Cuál es la solución? Que opción debo elegir en la Configuración del Reproductor de > iOS > OtherSettings > Resolución de Destino?

  • ¿por qué el voto negativo? No sé una cosa, y le pregunté al respecto. Qué tiene de malo eso?
  • He encontrado este video. Es este el camino correcto?
  • Me hizo anular. ¿Qué estás buscando? Componentes de la GUI? HUDs?
  • Sólo quiero ejecutar el juego en modo de pantalla completa para resoluciones diferentes. He editado mi pregunta.
  • Tal vez este hilo debe ayudar a: [Cambio de resolución][1] [1]: stackoverflow.com/questions/23118622/…

11 Comentarios

  1. 39

    la unidad cambia su juego de la cámara para que coincida con las dimensiones de la relación de aspecto de la pantalla es de usar. Obviamente, esto no siempre es deseada, así que hay un par de maneras de evitar esto:

    1) Primer método es muy fácil de implementar, a pesar de que rara vez se ve bien. Usted puede simplemente cambiar la cámara de la relación de aspecto para que coincida con la que hemos diseñado el juego a su alrededor. Así que si por ejemplo has diseñado tu partida en 4:3, te gustaría hacer algo como esto:

    Camera.aspect = 4f/3f;

    Sólo ten en cuenta que esto distorsionará el juego en diferentes relaciones de aspecto.

    2) El otro método es un poco más complejo, pero el resultado se ve mucho mejor. Si usted está utilizando una cámara ortográfica, una cosa importante a tener en cuenta es que, independientemente de lo que la resolución de la pantalla, la cámara ortográfica mantiene la altura a un conjunto de valor y sólo cambia el ancho. Por ejemplo, con una cámara ortográfica en un tamaño de 10, la altura se establece en 2. Con esto en mente, lo que tendríamos que hacer es compensar el mayor número posible de cámara dentro de cada nivel (por ejemplo, tener un amplio fondo) o cambiar dinámicamente el Ortográficas Tamaño de la cámara hasta que su anchura coincide con lo que has creado.

    Componentes de la GUI son más fáciles de implementar mediante el establecimiento de su posición a depender de la resolución de la pantalla cuando sea necesario. Por ejemplo, si desea un botón en la esquina superior derecha, sólo tiene que establecer su posición a algo como position = new Vector2(Screen.width - 50, 50);

    EDIT: Ya que usted menciona dispositivos que utiliza, hice un poco de buscar hasta encontrar lo que la proporción de aspecto de cada uno utiliza: Ipad2 = 4:3 , Iphone 4 = 3:2, y Iphone5 = 16:9

    Ya que usted dijo que se ve perfecto en el Ipad2, estoy adivinando que hemos diseñado el juego para usar una proporción de 4:3, por lo que el «recorte» que mencionas es solo que su cámara ortográfica se ha ampliado. La solución es utilizar uno de los dos métodos descritos anteriormente.

    Se puede ver cómo se verá en cada dispositivo dentro del editor de unity con bastante facilidad. Si vas a la ficha de juego (lo que aparece cuando pulsa play en el editor de unity), vas a ver que tiene un nombre de dispositivo, junto con una resolución y relación de aspecto. Cambio de esto le permitirá ver cómo se verá en diferentes relaciones de aspecto.

    • Gracias Steven por tan detallada respuesta, Pero quiero jugar mi juego en modo de pantalla completa en todos los dispositivos. He editado mi pregunta para lo que quieren exactamente. ¿Cómo puedo hacer eso?
    • He editado mi respuesta para reflejar la nueva información que usted proporcionó. Las dos soluciones que mencionar todavía parecen ser lo que usted necesita hacer para solucionar su problema. Las barras negras que estamos viendo en los lados de las pantallas de sus iphone es sólo porque su pantalla es más ancha, por lo tanto a través del sistema de cámara es más amplio.
    • Pero estoy usando una cámara de perspectiva no es un ortográficas uno.
  2. 4

    Puede que desee intentar la captura de la resolución del dispositivo mediante el uso de la Cámara.ScreenWidth y la Cámara.ScreenHeight.

    A continuación, hacer algo de matemáticas para calcular la diferencia de la resolución que tiene y aplicarlo al objeto padre.

    Esta escala todo lo más grande/más pequeño para adaptarse a la resolución del dispositivo sin tener múltiples resoluciones de imagen, etc, para diferentes dispositivos con resolución.

  3. 2

    Si su objetivo es conseguir que el ancho anterior:

    [RequireComponent(typeof(Camera))]
    public class ResizeCamera : MonoBehaviour 
    {
        private float   DesignOrthographicSize;
        private float   DesignAspect;
        private float   DesignWidth;
    
        public  float   DesignAspectHeight;
        public  float   DesignAspectWidth;
    
        public void Awake()
        {
            this.DesignOrthographicSize = this.camera.orthographicSize;
            this.DesignAspect = this.DesignAspectHeight / this.DesignAspectWidth;
            this.DesignWidth = this.DesignOrthographicSize * this.DesignAspect;
    
            this.Resize();
        }
    
        public void Resize()
        {       
            float wantedSize = this.DesignWidth / this.camera.aspect;
            this.camera.orthographicSize = Mathf.Max(wantedSize, 
                this.DesignOrthographicSize);
        }
    }
  4. 2

    Usted necesita para cambiar de la cámara de la ventanilla de acuerdo al dispositivo de la relación de aspecto.
    Suponga que usted ha hecho el juego para 720×1080

    A continuación, en la secuencia de comandos que debe hacer

    float xFactor = Screen.width / 720f;
    float yFactor = Screen.height  / 1080f;
    
    Camera.main.rect = new Rect(0,0,1,xFactor/yFactor);

    O

    La otra forma es, si usted está haciendo un juego para la relación de aspecto 9:16 entonces

    Hacer esto en el script,

    public float targetRatio = 9f/16f; //The aspect ratio of your game
    void Start()
    {
        Camera cam = GetComponent<Camera>();
        cam.aspect = targetRatio;
    }
  5. 1

    La manera más fácil he resuelto esto fue como señala Steven, la fuerza de mi cámara de perspectiva de la relación de aspecto para el que desarrollar para. Por supuesto, esta se deforma algunos objetos si la relación de aspecto que he desarrollado es diferente de la del dispositivo. Para los objetos de interfaz de usuario, si usted está utilizando el construir-en, creo que la rectángulos basado en un porcentaje de lo que el tamaño de la pantalla es

    Rect(0.5 * Screen.width, 0.5 * Screen.height, 0.25 * Screen.width, 0.25 * Screen.height) 

    Que tendrá lugar en la esquina superior izquierda en el centro de la pantalla y crear un rectángulo de 1/4 de la altura y 1/4 de la anchura de la pantalla. Estoy usando NGUI 2.7 para la interfaz de usuario y no he visto ninguna de las cuestiones con diferentes relaciones de aspecto tan lejos, y que uno utiliza una cámara ortográfica para representar la interfaz de usuario

    • forma mucho mejor para hacer dinámico de la interfaz gráfica de usuario, creo que el tamaño y la posición debe ser calculado sólo en onStart() método a menos que quiera hacer de apoyo tanto paisaje y retrato, a continuación, compruebe la Pantalla.orientación en LateUpdate método porque no sería eficiente para calcular Rect o innecesarios los controles sobre onGUI método.
  6. 1

    Sé que es un hilo viejo, pero la gente todavía podría terminar para arriba en busca de una respuesta.

    Para ajustar una perspectiva de la cámara para diferentes proporciones de aspecto de pantalla con diferente comportamiento de la Unidad por defecto, usted necesita algo de trigonometría. Toda la información necesaria acerca de que es aquí: https://en.wikipedia.org/wiki/Angle_of_view

    Si quieres una manera fácil, sin embargo, he aquí una solución que funciona con todos los tipos de cámara: http://u3d.as/oUX

  7. 1

    Ok, esta es una gran pregunta. Muchas personas se han referido a forzar una relación de aspecto, lo cual es una buena solución para tener en cuenta. Sin embargo, para muchos de los juegos este no es el apropiado. Para muchos diseños de juego, usted quiere que el juego se sienta como es nativa del dispositivo/pantalla se ejecuta en, y desea utilizar cada pulgada cuadrada de la pantalla de bienes raíces que usted puede. Para hacer esto, usted debe construir y poner a prueba todos los sistemas de juego de diferente tamaño y forma de las pantallas. Es un problema similar a la creación de aplicaciones y sitios web para múltiples dispositivos.

    Tamaño De La Pantalla

    El tamaño de la pantalla puede ser recuperada mediante programación utilizando el DPI y la resolución con una instrucción como:

    Resolution res = Screen.currentResolution;
    float screenSquareInches = res.width * res.height / Screen.dpi;

    Para el contenido en la pantalla que se ve a través de la cámara, sólo hay una variable que necesita ser modificada, y que el tamaño de la cámara (o la cantidad de cosas en el mundo del juego que será exprimida sobre la pantalla). Usted puede controlar el tamaño de la cámara con el campo de visión para juegos en 3D o la ortográficas tamaño para juegos 2D. Sólo prueba va a decir lo que la ecuación admite la más amplia gama de tamaños de pantalla, pero algo a lo largo de estas líneas podrían servir bien:

    //this should be a tweakable number, so you can fine tune it to your needs. It represents the screen size at which the camera size should not be scaled at all
    float expectedScreenArea = 20;
    //this number should also be tweakable, which declares how much smaller/larger text can get depending on the screen size. Generally larger screens are viewed from farther away, so scaling should be slight
    float cameraScalingRate = 0.25f;
    //multiply this number by the default/base camera size you have picked, whether that's field of view or orthographic size
    float cameraSizeMultiplier = 1 + (screenSquareInches / expectedScreenArea - 1) * cameraScalingRate;

    Aceptar, que deben obtener la mayoría de la manera en la ampliación del mundo de juego, pero, ¿qué acerca de los elementos de interfaz de usuario, las cosas como texto, HUD, y los controles en pantalla? Así, elementos como texto, la ecuación anterior debe trabajar decentemente bien, a pesar de que usted puede ser que desee un valor diferente para el escalado de tarifa. Para los controles de pantalla, usted puede ser que desee un más completo de transformación, tales como palancas de mando de pasar a la parte inferior de las esquinas de la pantalla en una tablet en lugar de centrada en los lados, o si no es un dispositivo de pantalla táctil, quite los controles en pantalla por completo. Que está fuera del alcance de esta pregunta.

    Relación De Aspecto De Pantalla

    La relación de aspecto de la pantalla (cómo todo el frente de altura es) también es importante y necesita su propio manejo. Generalmente la mejor manera de hacer esto es para congelar la altura vertical de la pantalla, de manera que la pantalla se ensancha, los elementos de la pantalla no están a escala, pero como la pantalla se pone más alto, los elementos en la escala de la pantalla de forma proporcional a cuánto más alto de la pantalla crece. Este ya es el comportamiento predeterminado para las cámaras, pero para los elementos de interfaz de usuario tienes que ponerlo como tal. Esto es relativamente fácil si usted está utilizando la nueva interfaz de usuario del sistema con el lienzo». En un CanvasScalar componente, hay una propiedad que los controles de los elementos y cómo se escala en función de la relación de aspecto. Cambiar esto para que coincida con la anchura o la altura, y tiene que coincidir con la altura.

    Para Su Ulterior Consideración

    Con el apoyo de diferentes tamaños de pantalla y formas no hay más que pensar que simplemente hacer que todo encaje. Usted también necesita asegurarse de que juego se juega bien en las diferentes pantallas. Esto va desde cosas tan sutiles como no hacer que el jugador se sienta claustrofóbico en una pequeña pantalla para asegurarse de que los enemigos no pueden disparar en el reproductor si se está fuera de la pantalla para asegurarse de que la actualización de los límites que mantener los elementos en la pantalla.
    Otra cosa a tener en cuenta si se trata de un juego de PC es que alguien puede enchufar su ordenador en una pantalla diferente o cambiar la resolución sobre la marcha. Con esto en mente, puede ser bueno para volver a ejecutar las ecuaciones anteriores según sea necesario para que un jugador no tenga que salir del juego para conseguir que las cosas forro de arriba a la derecha de nuevo.

  8. 0

    Si usted es el desarrollo de juegos 2d,que es la cámara está en la vista ortográfica, a continuación, Sólo hacer el siguiente código y sujétela con su gameobject. Se escala el gameobject(en este caso el sprite) con la resolución de la pantalla.

    void Resize()
    {
        SpriteRenderer sr=GetComponent<SpriteRenderer>();
        if(sr==null) return;
    
        transform.localScale=new Vector3(1,1,1);
    
        float width=sr.sprite.bounds.size.x;
        float height=sr.sprite.bounds.size.y;
    
    
        float worldScreenHeight=Camera.main.orthographicSize*2f;
        float worldScreenWidth=worldScreenHeight/Screen.height*Screen.width;
    
        Vector3 xWidth = transform.localScale;
        xWidth.x=worldScreenWidth / width;
        transform.localScale=xWidth;
    
        Vector3 yHeight = transform.localScale;
        yHeight.y=worldScreenHeight / height;
        transform.localScale=yHeight;
    
    }
  9. 0

    si Usted no tiene ninguna opción que Usted también puede Hacer algo de trabajo y agregar un Script especial para su cámara que:

    1. comprueba la Resolución de Pantalla para el dispositivo
    2. establece la resolución de destino, para que
    3. y también se establece el objetivo de la relación de aspecto para que (IMPORTANTE)

    todo lo que necesitas hacer es escribir una función de base para la comprobación de la resolución de la pantalla (anchura y altura para los dispositivos que desee) y, a continuación, añadir más funcionalidad a que para establecer la correcta resolución de pantalla y la relación de aspecto!

    • Hola @a_m_dev, ¿sabes cómo establecer la resolución de destino (con la resolución actual de la pantalla) y también de cómo establecer los objetivos de la relación de aspecto para que?
  10. 0

    Su muy fácil para la Unidad Ahora como Unity3D, tiene su propia interfaz de usuario del sistema. Para 3D la Unidad Ajusta la cámara Automáticamente con el tamaño de la pantalla.
    El problema surge de la interfaz de usuario y en realidad es un poco complicado. En primer lugar, trate de averiguar qué elementos necesita cambiar de posición y el tamaño con el tamaño de la pantalla.
    Por ejemplo, si usted tiene un botón exactamente en el centro de la pantalla. Entonces no necesita cambiar la posición de acuerdo a la pantalla. Permanecerá en el centro.

    Ahora vamos a echar un escenario en el que tiene un botón en la esquina de la pantalla podemos ver el botón de pausa en la parte superior derecha o en la parte superior izquierda. Ahora usted tendrá que anclar su botón en la esquina en consecuencia. No importa en que el tamaño de la pantalla el juego se está ejecutando, el botón de pausa debe atenerse a la esquina.

    Ahora veamos otro caso en el que usted tiene un fondo en el menú. Ahora usted tendrá que aplicar tramo para este BG sprite. Este BG será de estiramiento y encogimiento en consecuencia, pero todos los artículos que en ella se tiene un arreglo de tamaño.
    Para esto es recomendable tener a la Superficie plana de modo que un mismo BG puede tener una buena calidad de 16:10 o 4:3
    (Todo es cuestión de la Unidad de interfaz de usuario Nativa)

Dejar respuesta

Please enter your comment!
Please enter your name here