2015-08-11 12 views
7

Ich bin neu in Unity und ich habe festgestellt, dass es schwierig ist, ein Multi-Auflösung-2D-Spiel auf Einheit ohne bezahlte 3. Plugins im Asset Store.Entwickeln Sie 2D-Spiel Inside Canvas Scaler

Ich habe einige Tests gemacht, und ich bin in der Lage auf diese Weise mehr Auflösung Unterstützung zu tun:

1- Setzen Sie alles von UI (Buttons, etc.) in einem Canvas-Objekt in Modus-Bildschirm Raum Rendern - Overlay mit 16: 9 Referenzauflösung und feste Breite.

2- Setzen Sie den Rest der Spielobjekte in ein Game-Objekt namens GameManager mit der Canvas Scaler-Komponente im Rendermodus Screen Space - Kamera mit 16: 9 Referenzauflösung, fester Breite und der angeschlossenen Hauptkamera. Danach müssen alle Spielobjekte wie Spieler, Plattformen usw. innerhalb des GameManagers eine RectTransform-Komponente, eine CanvasRenderer-Komponente und eine Bildkomponente haben.

Kann ich das Spiel auf diese Weise weiter entwickeln, oder ist das ein falscher Weg, die Dinge zu tun?

Grüße

+0

Der Canvas ist für GUI-Komponenten und nicht für das Erstellen eines vollständigen Spiels gedacht. Allerdings sollte die Auflösung des Spiels in Ordnung sein. Ich bin mir sicher, dass Sie das Ansichtsfenster auf 800 zu 600 setzen können. Ich habe vielleicht etwas Code herumliegen, aber ich werde später nachsehen müssen. – Canvas

+0

Vielen Dank für Ihre Hilfe . Ich warte auf Ihren Code, um die Auflösung des Spiels zu ändern. – mistic

+0

Es scheint, dass der Code, den ich herumlege, Ihnen hier helfen würde :(Der Code, den ich habe, ist im Grunde behalten Sie die Spielauflösung die gleiche egal, auch wenn sie Fullscreen gehen. Aber ich habe diese http gefunden: //gamedev.stackexchange. com/questions/79546/how-do-you-behandeln-aspect-ratio-differences-with-unity-2d – Canvas

Antwort

2

Ich werde Sie mit Canvas Scaler für die Entwicklung ein komplettes Spiel nicht empfehlen. Der beabsichtigte Zweck des Canvas-Scalers bestand darin, Menüs zu erstellen, die Sie nur zum Erstellen von Menüs verwenden sollten.

Die 2D-Spiele, die ohne den Canvas-Scaler erstellt wurden, verursachen bei mehreren Auflösungen keine Probleme (meistens verursachen sie keine Probleme).

Also, Schritt 1 ist korrekt, aber für Schritt 2 muss keine Canvas Scaler-Komponente angehängt werden.

Denken Sie daran, Ihre Szene als 2D (nicht notwendig) und Ihre Kamera orthographisch (notwendig) zu markieren, während Sie 2D-Spiele entwickeln.

+0

Danke für Ihre Hilfe.Was sind die Hauptprobleme, die Canvas Scaler für die Entwicklung des kompletten Spiels verursachen kann? – mistic

+0

Entwickeln eines kleinen Spiels mit nicht so Supper Features: Canvas Scaler wird kein Problem verursachen, aber in bestimmten Szenarien wie Sie möchten, dass der Spieler in der Lage ist, blättern Sie Karte durch nur einen Finger auf dem Bildschirm ziehen. Dies kann ein wenig schwierig (nicht unmöglich) sein, da der Scaler für die Leinwand bestimmte Objekte so einschränkt, dass sie zur Laufzeit verschoben werden können. Mit "nicht unmöglich" meine ich, dass die Einheit es verfügbar gemacht hat, dass Sie von ihren UI-Klassen erben und sie auf die von Ihnen gewünschte Weise erweitern können. –

+0

Danke für Ihre Antwort. Sagst du, dass ich Leistungsprobleme mit dieser Lösung haben kann? – mistic

5

Auch nicht vergessen GUI, Graphics. Es ist ein häufiges Missverständnis, dass GUI es abgeschrieben und langsam ist. Nein, ist es nicht. Die GameObject-Helfer für die GUI waren schlecht und wurden abgeschrieben, aber die API für die Eingabe von OnGUI funktioniert hervorragend, wenn Sie nur eine Textur oder Text auf dem Bildschirm zeichnen müssen. Sie werden Legacy genannt, aber es gibt keine Pläne, sie zu entfernen, wie das ganze Unity UI is made out of it anyway.

Ich habe ein paar Spiele nur auf diese gemacht, mit Unity als eine sehr übertriebene Multiplattform API für Draw Quad.

Es gibt auch GL, wenn Sie etwas mehr wollen.

Denken Sie daran - es wird keine integrierte Physik, Partikeleffekte, Pfadfindung oder so etwas geben - nur eine einfache Möglichkeit, Dinge auf dem Bildschirm zu zeichnen. Sie haben die totale Kontrolle darüber, was gezeichnet wird - und das ist sowohl eine gute als auch eine schlechte Sache, je nachdem, was Sie tun möchten.

+0

Was Multiresolution betrifft - das ist eines der Dinge, die Sie selbst implementieren müssen - so wie alle anderen in alten Frameworks wie SDL, Allegro oder den vielen Flash-Engines. –