Also portiere ich zum ersten Mal in Unity3D ein Spiel auf Android. Und ich bin auf dem Weg auf ein paar Probleme gestoßen. Mein aktuelles Problem ist, dass die Auflösung nicht richtig zu sein scheint, die Ränder des Bildschirms abschneidet und meine Bildlaufstopps zum Scrollen des Bildschirms nach links / rechts nicht mehr an der richtigen Stelle sind.
Nach ein wenig Recherche sagen viele Leute, dass Sie Ihr Spiel Resolution Independent machen müssen, um auf allen Androids / Iphone / Ipad laufen zu können. Ist das wahr? Wenn ja, wie mache ich das? Wenn nicht, wie kann ich helfen, die Auflösung zu korrigieren, damit sie beim Portieren auf mobile Geräte richtig aussieht?
EDIT: Ich habe immer noch nicht wirklich das, was ich brauche, die Auflösungen funktionieren immer noch nicht richtig, selbst mit dem unten aufgeführten Code und den Tricks. Ich brauche eine Möglichkeit, um die Auflösung je nach Gerät anzupassen. Wenn ich versuche, die Auflösung eines Geräts mithilfe des Mungoid-Codes abzurufen, wird aus irgendeinem Grund 0x0 zurückgegeben
quelle
Antworten:
Ein Problem, auf das Sie bei Android stoßen, ist, dass jedes Gerät seine eigene Bildschirmgröße, Auflösung und Pixeldichte hat. Wenn Sie möchten, dass Ihr Spiel auf allen Geräten identisch aussieht, müssen Sie viel arbeiten und werden wahrscheinlich nie mit den Ergebnissen zufrieden sein. Entweder wird das Spiel auf Breitbild-Displays gestreckt oder auf Nicht-Widescreen-Displays komprimiert angezeigt. Ich schlage vor, Sie entscheiden, was wirklich wichtig ist, und lassen alles andere ein wenig gleiten.
Ohne Screenshots oder Wissen darüber, was Ihr Spiel ist und wie es aussieht, können wir alle über Lösungen spekulieren, aber wir haben keine spezifische Richtung, um Sie spezifisch zu beraten.
In Unity können Sie mit der Screen- Klasse:
Screen.width
undScreen.height
(unter anderem) auf die Abmessungen des aktuellen Bildschirms zugreifen . Sie können dann das Seitenverhältnis der Kamera ändern, um zu ändern, was auf Ihren unterschiedlich großen Bildschirmen angezeigt wird, basierend auf den Bildschirmabmessungen und Ihrer persönlichen Erwartung, was sichtbar sein soll.Wenn Sie sicherstellen möchten, dass alle HUD-Anzeigen richtig skaliert sind, können Sie dies tun, indem Sie die GUI-Transformationsmatrix basierend auf den Bildschirmabmessungen in jeder
OnGUI()
Funktion ändern . Ich habe es zuvor getan, indem ich dieses einfache Skript erstellt und es an alles angehängt habe, was GUI-Elemente gerendert hat, die ich skalieren wollte:Dann
OnGUI()
setze ich in den eigentlichen Funktionen sofort die Transformationsmatrix:quelle
Screen.width
und.height
zusammen mitCamera.fieldOfView
undCamera.aspect
, um dieselbe Ansicht auf beliebigen Bildschirmgrößen zu reproduzieren. Es würde nur einige Trigger erfordern, um genau herauszufinden, wie es geht.Sie könnten etwas wie das Folgende versuchen und es anwenden. Ich würde vermuten, dass ein mobiles Gerät nur eine Auflösung zurückgeben sollte.
Weitere Informationen zum Bildschirm in Unity finden Sie hier unter http://unity3d.com/support/documentation/ScriptReference/Screen.html
quelle