web-dev-qa-db-fra.com

Comment puis-je coder mon jeu pour qu'il fonctionne sur toutes les résolutions d'appareils Android? (avec l'unité)

J'ai un jeu que j'ai créé en résolution 480x320 (je l'ai défini dans les paramètres de construction) dans Unity Mais je voudrais publier mon jeu pour chaque appareil Android avec chaque résolution. Comment puis-je le faire, pour dire à Unity d'adapter mon jeu à la résolution de l'appareil? Est-il possible de faire? 

Merci d'avance!

11
Zwiebel

La réponse à votre question dépend en grande partie de la manière dont vous avez implémenté le jeu. Si vous l'avez créé à l'aide de textures d'interface graphique, cela dépend en grande partie de la manière dont vous avez placé/dimensionné vos objets par rapport à la taille de l'écran, ce qui rend les choses un peu difficiles.

Si la majorité de votre jeu est fait en utilisant des objets (tels que des avions, des cubes, etc.), il y a deux méthodes que je choisis habituellement d'utiliser.

1) La première méthode est très facile à mettre en œuvre, même si elle n’est pas toujours très belle. Vous pouvez simplement changer le format d'image de la caméra pour l'adapter à celui sur lequel vous avez conçu votre jeu. Donc, dans votre cas, puisque vous avez conçu votre jeu à 4: 3, vous feriez quelque chose comme ceci: 

Camera.aspect = 4f/3f;

Cependant, si quelqu'un joue sur un écran destiné à 16: 9, le jeu finira par paraître déformé et étiré.

2) La deuxième méthode n’est pas aussi simple, elle demande beaucoup de travail et de calcul, mais vous donnera un résultat beaucoup plus net. Si vous utilisez une caméra orthographique, gardez à l'esprit que, quelle que soit la résolution de l'écran utilisée, la caméra orthographique maintient la hauteur à une hauteur définie et ne modifie que la largeur. Par exemple, avec une caméra orthographique d'une taille de 10, la hauteur sera réglée sur 2. Dans cet esprit, il vous faudra compenser la caméra la plus large possible à chaque niveau (par exemple, un fond large ) ou modifiez dynamiquement la taille orthographique de la caméra jusqu'à ce que sa largeur corresponde à celle que vous avez créée.

Si vous avez joué à un jeu en 3D avec une caméra stéréoscopique, la résolution de l'écran ne devrait pas vraiment affecter son apparence, mais je suppose que cela dépend du jeu. Des informations supplémentaires sont donc nécessaires.

16
Steven Mills

La façon dont j’ai fait est de changer la fenêtre de la caméra en fonction du format de l’appareil .__

Vous pouvez le faire dans n'importe quel script 

float xFactor = Screen.width / 800f;
float yFactor = Screen.height  / 1280f;


Camera.main.rect=new Rect(0,0,1,xFactor/yFactor);

et cela fonctionne comme par magie

9
Rohit

Voici mon script pour la mise à l'échelle de la caméra orthographique dans les jeux en 2D

public float screenHeight = 1920f;
public float screenWidth = 1080f;
public float targetAspect = 9f / 16f;
public float orthographicSize;
private Camera mainCamera;

// Use this for initialization
void Start () {

    // Initialize variables
    mainCamera = Camera.main;
    orthographicSize = mainCamera.orthographicSize;

    // Calculating ortographic width
    float orthoWidth = orthographicSize / screenHeight * screenWidth;
    // Setting aspect ration
    orthoWidth = orthoWidth / (targetAspect / mainCamera.aspect);
    // Setting Size
    Camera.main.orthographicSize = (orthoWidth / Screen.width * Screen.height);
}
1
Dias

Un moyen facile de faire cela est de considérer votre cible. Je veux dire que si vous faites un jeu pour Iphone 5, le rapport de format est de 9:16 v ou 16: 9 h.

   public float targetRatio = 9f/16f; //The aspect ratio you did for the game.
void Start()
{
   Camera cam = GetComponent<Camera>();
   cam.aspect = targetRatio;
} 
1
Nelson Austria