Unterstützt mehrere Seitenverhältnisse in Unity

9

Ich habe versucht, ein 2D-Unity-Spiel zu erstellen, das jedes Seitenverhältnis von Geräten für Android und Tablets unterstützt. Gibt es eine Möglichkeit, die von Unity bereitgestellt oder empfohlen wurde?

    
Balu 06.10.2014, 06:18
quelle

6 Antworten

1

Es gibt ein paar Dinge, die in Betracht gezogen werden sollten. Das erste ist, was Elemente sollten skalieren dürfen? Es gibt zwei Kategorien, nämlich UI und Game Elements.

Der Teil der Spielelemente kann viele Dinge bedeuten. Wenn der Spielbereich begrenzt ist, ist der Schlüssel typischerweise einschließlich einer großzügigen Portion "negativen Platzes" oder Teilen des Bildes, die das Spiel nicht wesentlich beeinflussen. Zum Beispiel könnte das untere Bild von links und rechts beschnitten werden, ohne das Bild signifikant zu beeinflussen. Legen Sie den mittleren Teil des Bildes als Schlüsselelement oder eine Seite fest.

Man könnte auch die Elemente dehnen, obwohl das zu unerwünschten Effekten führen könnte. Ein Überschuss an Bild und Testen mit verschiedenen Seitenrationen ist der beste Weg für solche Hintergrundelemente. Diese Hintergrundelemente können im Hintergrund platziert werden, wobei die Leinwand auf "Mit Bildschirmgröße skalieren" und den "Bildschirmanpassungsmodus" auf den für Ihr Bild am besten geeigneten Effekt eingestellt wird. Siehe " Canvas Scaler " für weitere Informationen.

Wie bei den anderen Elementen der Benutzeroberfläche besteht der Schlüssel darin, Ankerpunkte zu verwenden. Sie können festlegen, dass ein UI-Element entweder eine bestimmte Anzahl von Pixeln annimmt oder einen Teil des Bildschirms ausfüllt, wenn Sie es platzieren. Sehen Sie sich die "Rect Transform" -Komponente an, die jedem dieser UI-Objekte beiliegt. Sie können diese auch auf dem Bildschirm anpassen.

Zum Schluss könnten Sie das programmatisch machen. Es existiert Screen.height und Screen.width . Sie können die Objekte in der Laufzeit wie gewünscht anpassen, damit sie funktioniert. Ich schlage vor, dass Sie das nicht für alles tun, aber es könnte in einigen Fällen helfen.

    
PearsonArtPhoto 11.01.2016 17:52
quelle
0

In meinem Fall arbeite ich, indem ich alles als Maßstab erstelle

Also, es könnte unterstützen, egal Bildschirm sind

%Vor%

* ALLE BEWERTETEN WERTE SIND DIE BEWERTETEN, DIE ICH NACH BASIS AUF EINEM BILDSCHIRM ERZEICHNE *

Dies ist ein Beispiel für ein 3D-Spiel, das ich gemacht habe, aber ich benutze immer noch dasselbe Konzept im GUI-Teil

Dies ist ein Beispiel für ein 2D-Spiel, bei dem ich dieses Konzept verwendet habe

    
Sruit A.Suk 06.10.2014 11:03
quelle
0

Ich weiß, dass es ein alter Post ist, wollte eine Alternative dafür zeigen. Sie könnten versuchen zu definieren, auf welche Achse Sie Ihr Spiel skalieren möchten (zB alle Breite sollte immer sichtbar sein, die Höhe sollte auf die Breite skalieren): Speichern Sie alle Szenenobjekte in einem Elternteil und skalieren Sie den Elternteil. Ex. (meine Breite wurde festgelegt und die Höhe wurde für die Breite abgeschnitten)

%Vor%

Hinweis: Mein GameHolder ist anfänglich von Skalierung (1,1,1);

    
Ilona Hari 20.02.2015 07:53
quelle
0

Sie sollten alles in ein Hauptspielobjekt einfügen und es mit einem einfachen Skript skalieren (Kamera 'etwas' könnte Ihnen helfen, das Bildschirmverhältnis zu erkennen). Das ist meine Idee. Sorry für mein schlechtes Englisch.

    
thành nguyễn kim 16.02.2016 14:39
quelle
0

Probieren Sie die neue unity3d ui mit Verankerung.

    
Syamesh K 14.03.2016 09:06
quelle
0

Für alle UI-Elemente müssen Sie das Einheiten-UI-System verwenden. Dies ist der beste Weg, um mehrere Plattformen und Seitenverhältnisse zu unterstützen.

Der folgende Inhalt basiert auf diesem Artikel: Dieser Artikel sagt im Wesentlichen die gleichen Dinge, die ich sage: 1) In Bezug auf Design nur in hoher Auflösung der Artikel sagte:

  

"Ein anderer Ansatz ist die Verwendung von Grafiken mit höherer Auflösung (in der Tat die   eines mit der höchsten Auflösung des Geräts, auf das Sie zielen möchten und   skalieren Sie es auf allen Geräten. Dies ist jedoch keine gute Idee, weil   Sie benötigen effektiv viel mehr Speicher und verlieren an Leistung   Low-End-Geräte. "

Also Design in hoher Auflösung und dann verkleinern, es ist nicht der gute Ansatz.

So wie der Artikel gesagt hat, ist es das Beste, verschiedene Bilder für unterschiedliche Auflösungen (SD, HD UD) zu haben und das richtige Bild zu laden, wenn das Spiel geladen wird: Der Artikel sagte: "Der beste Ansatz ist, ein anderes Bild mit der höheren Auflösung zu verwenden und diese Bildversion auf dem iPhone 4 und der Low-Res-Version auf einem iPhone 3GS zu verwenden, was Apple tatsächlich mit Bildern mit einem @ 2x-Suffix macht der Dateiname.

In ähnlicher Weise können Sie alle Ihre Grafiken in ultrahoher Auflösung erstellen, die zum Beispiel für das iPad 3 erforderlich sind, ein anderes Suffix anhängen und das richtige Bild basierend auf der Bildschirmauflösung des Geräts laden. Dies wird Inhaltsskalierung genannt, da das Spiel nur für eine einzelne "logische" Szenengröße geschrieben wurde und alle Bilder & amp; Schriftarten werden auf die Geräteauflösung skaliert. "

Mit diesem Ansatz haben wir das Problem der Zielgeräte mit unterschiedlichen AUFLÖSUNGEN gelöst. Nein, wie der Artikel sagt, gibt es ein anderes Problem, das auf die Geräte mit verschiedenen ASPECT RATIO zielt: Von der Artischocke: "Dieser Ansatz ist jedoch nicht ausreichend, wenn Sie Geräte mit unterschiedlichen Seitenverhältnissen anvisieren möchten"

Dafür wähle ich normalerweise ein Seitenverhältnis, das zum Design meines Spiels passt, und benutze das folgende Skript, um das gleiche Seitenverhältnis auf verschiedenen Geräten beizubehalten:

%Vor%

Dies sollte das Problem mit den verschiedenen Seitenverhältnissen lösen. Wenn Sie jetzt ein Spielobjekt verankern möchten, das immer in einer festen Position sein soll, wenn das Spiel auf Geräten mit unterschiedlichen Seitenverhältnissen geändert wird, können Sie das folgende Skript verwenden:

%Vor%

Ich hoffe, dies kann helfen, für weitere Informationen lesen Sie bitte den Artikel, den ich oben verlinkt habe.

    
Max_Power89 27.04.2016 08:05
quelle

Tags und Links