- Home /
Unity android screen resolution
I have made a simple 2D game on the latest unity version in free aspect ratio however whenever I change the screen to portrait or landscape things mess up. Now I have spent the whole day following tutorials and going through every tutorial or answer available but strangely not even one of the code helped. Here is how my screen looks on different resolutions
Right now I'm using this code
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Screeratio : MonoBehaviour {
// Use this for initialization
void Start () {
// set the desired aspect ratio (the values in this example are
// hard-coded for 16:9, but you could make them into public
// variables instead so you can set them at design time)
float targetaspect = 16.0f / 9.0f;
// determine the game window's current aspect ratio
float windowaspect = (float)Screen.width / (float)Screen.height;
// current viewport height should be scaled by this amount
float scaleheight = windowaspect / targetaspect;
// obtain camera component so we can modify its viewport
Camera camera = GetComponent<Camera>();
// if scaled height is less than current height, add letterbox
if (scaleheight < 1.0f)
{
Rect rect = camera.rect;
rect.width = 1.0f;
rect.height = scaleheight;
rect.x = 0;
rect.y = (1.0f - scaleheight) / 2.0f;
camera.rect = rect;
}
else // add pillarbox
{
float scalewidth = 1.0f / scaleheight;
Rect rect = camera.rect;
rect.width = scalewidth;
rect.height = 1.0f;
rect.x = (1.0f - scalewidth) / 2.0f;
rect.y = 0;
camera.rect = rect;
}
}
// Update is called once per frame
void Update () {
}
}
and this doesn't seem to work as well. What should I do that my game runs smoothly on any screen size.
Answer by TheSOULDev · Sep 19, 2017 at 01:12 AM
For starters, anchor your GUI to the canvas. I'm pretty sure you're going to need to create 2 setups for each screen orientation or lock the screen orientation to one orientation. So, you'll probably want a script that replaces the positions of your elements based on screen orientation.
I changed the orientation to landscape so portrait view is out of my game now, I tried anchoring gui to canvas however it does not work, whenever I switch to "Scale with screen size" landscape version I'm working on appears fine however when I switch to another landscape version like ratio 3:2 the whole background just goes out of camera view.
Your answer
Follow this Question
Related Questions
Physics 2D Raycast is not working 3 Answers
Camera go through the wall. Please look at my script and help !!! 0 Answers
Rotating player relative to the camera (Unity C#) 1 Answer
Want to move object slowly to where the mouse clicks? 1 Answer
How do I change Raycast's direction based on movement input? 1 Answer