Unity Game für mehrere Plattformen optimieren?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Hi!

Dein UI-Theme lässt sich recht einfach in den Griff bekommen: https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/HOWTO-UIMultiResolution.html Das Stichwort hier ist, dass Du die Ankerpositionen und Pivot-Punkte korrekt setzten musst, damit sich die Elemente bei unterschiedlicher Auflösung korrekt platzieren. Für die Größenskalierung sorgt dann der Canvas Scaler. Findest Du alles im angesprochenen Link. :)

Zu Deiner anderen Frage mit den Optionen:

Hier hast Du generell zwei Möglichkeiten, herauszufinden, wo Du bist:

Entweder Du nutzt Application.platform (https://docs.unity3d.com/ScriptReference/Application-platform.html), um herauszufinden, auf welcher Plattform Du bist und dementsprechend Controls anzuziegen/auszublenden:

void Start() {
  if (Application.platform = RuntimePlatform.Android) {
    einButtonDerNurBeiWindowsSichtbar.SetActive(false);
  }
}

Oder Du kannst auch Compiler-Direktiven (https://docs.unity3d.com/Manual/PlatformDependentCompilation.html) nutzen:

void Start() {
#if UNITY_ANDROID
  einButtonDerNurBeiWindowsSichtbar.SetActive(false);
#endif
}

Jetzt stellt sich noch die Frage: Wann nutze ich was? Das lässt sich ganz einfach beantworten, denn es gibt einen gravierenden Unterschied zwischen beiden Möglichkeiten:

Im ersten Fall wird der Code mit in Dein Spiel einkompiliert und zur Laufzeit wird er ausgewertet. Im zweiten Fall wird der Code nur bedingt mit in ein Spiel einkompiliert. D.h., wenn Du das Spiel für Windows erstellst, wird die Zeile mit dem "#if UNITY_ANDROID" überhaupt nicht mehr im Endergebnis zu finden sein.

Compiler Direktiven muss man immer dann nutzen, wenn man bspw. auf Funktionen/APIs zugreift, die es auf dem anderen Betriebssystem nicht gibt. Wenn Du bspw. auf bei Android auf das Gyrometer/Accelerometer zugreifen willst, dann sind das Funktionen, die Windows nicht kennt. Ergo kann Unity mit dieser API Dein Spiel für Windows überhaupt nicht kompilieren. Hier muss man dann eine Compiler Direktive nutzen, damit der Code erst gar nicht sichtbar wird für Windows, daher kommt dort dann auch kein Fehler. :)

Woher ich das weiß:Berufserfahrung
PlattBirne 
Fragesteller
 08.03.2021, 20:37

Hey! Vielen vielen Dank für diese lange und detaillierte Antwort! ❤️

Es ist nicht selbstverständlich dass sich jemand so viel Zeit für eine Antwort nimmt! :)

1