Die Xamarin/Unity 3D-Integration für Android und iOS, die von Florian Auer von Arau Consulting entwickelt wurde, bietet eine hocheffektive, einfache, aber praktische Methode zur Nutzung der Leistungsfähigkeit beider Frameworks, um robuste, benutzerfreundliche, plattformübergreifende mobile Anwendungen mit einfach zu bedienendem 3D-Rendering und Physik zu erstellen. Arau Consulting, provides a highly effective, simple, but practical method to leverage the power of both frameworks to build robust, user-friendly, cross-platform mobile applications with easy-to-use 3D rendering and physics.
Wie im Folgenden beschrieben, ist die Integration von Unity 3D und Xamarin jedoch nicht in beiden Frameworks enthalten. Daher war es nicht möglich, beide gemeinsam für die Entwicklung mobiler Spiele zu nutzen. Dies änderte sich 2019, als Unity sein "Unity-as-a-library"-Framework (Unity 2019.3.02a) veröffentlichte, das es ermöglichte, eine Unity3D-Ansicht in eine bestehende Android- oder iOS-App zu integrieren. Auer entwickelte daraufhin die Bindung, um die besten Funktionen von Xamarin und Unity bei der Entwicklung von mobilen Spiele-Apps für Android und iOS zu nutzen.
Erweitern wir dieses Thema, indem wir Xamarin und Unity 3D vorstellen, bevor wir uns die Funktionalität ansehen, die Florian Auer (Arau Consulting) entwickelt und als Open-Source bereitgestellt hat.
Einführung von Xamarin für iOS und Android
Bereits im Jahr 2000 führte Microsoft das .NET-Softwareentwicklungs-Framework ein, das auch die neue Programmiersprache C# umfasste. Bald darauf begann die Entwicklung von Mono, die von Miguel de Icaza geleitet wurde. Das ursprüngliche Ziel war es, C#-Entwicklungstools für Linux bereitzustellen. Dieses Projekt entwickelte sich jedoch bald zu einer plattformübergreifenden Laufzeitumgebung für .NET.
Im Jahr 2011 übernahm Xamarin, ein neues Unternehmen, die Entwicklung und Wartung von Mono für Android und MonoTouch (für iOS). Im Jahr 2016 unterzeichnete Microsoft eine Vereinbarung zur Übernahme von Xamarin. Der Wert, den Xamarin iOS und Xamarin Android für den Werkzeugkasten des Entwicklers mit sich bringt, besteht darin, dass sie eine gemeinsame C#-Codebasis haben, die Entwicklern die Funktionalität bietet, gerätespezifische (oder plattformspezifische) iOS- und Android-Apps mit nativen Benutzeroberflächen zu schreiben und Code über verschiedene Plattformen hinweg zu teilen, einschließlich Linux, Android, Windows, iOS und macOS.
Aus technischer Sicht handelt es sich bei Xamarin für iOS und Android um plattformübergreifende Implementierungen der CLI oder Common Language Infrastructure, auch bekannt als .NET.
Eine Einführung in Unity 3D
Unity oder Unity 3D ist eine plattformübergreifende Spiel-Engine, die erstmals im Juni 2005 veröffentlicht und von Unity Technologies entwickelt wurde. Ursprünglich wurde sie für macOS entwickelt, aber sie wurde seitdem erweitert, um mehrere Plattformen zu unterstützen, einschließlich iOS und Android. Wikipedia.com merkt an, dass ein besonders beliebter Anwendungsfall für Unity 3D die Entwicklung mobiler Spiele ist, insbesondere für iOS und Android. Beispiele für bemerkenswerte Spiele sind Pokémon Go und Call of Duty: Mobile. Schließlich ist es auch bei Indie-Spielentwicklern beliebt, weil es für Anfänger einfach zu bedienen ist.
Entwickler können mit Unity sowohl 2D- als auch 3D-Spiele entwickeln. Außerdem ist C# eine der Programmiersprachen, die für die Entwicklung mobiler Spieleanwendungen verwendet werden. Da also sowohl Xamarin als auch Unity 3D C# als Entwicklungssprache verwenden und Unity Mono zum Kompilieren von Android- und iOS-Apps nutzt, liegt es nahe, dass sie kompatibel sein könnten. Oder doch nicht?
Unity und Xamarin sind in ihren ursprünglichen Formaten nicht kompatibel, auch wenn Unity eine Vor-Xamarin-Variante von Mono als Grundlage für die Kompilierung von Android- und iOS-Apps verwendet. Daher kann man davon ausgehen, dass die Verwendung von Xamarin und Unity 3D zur Entwicklung mobiler Anwendungen eine Herausforderung darstellen wird.
Unity 3D/Xamarin-Integration für iOS und Android
Wie bereits am Anfang des Artikels erwähnt, hat Florian Auer von Arau Consulting seine Lösung für diese Integration als Open-Source-Projekt veröffentlicht. Lassen Sie uns daher diese Aussage erweitern, indem wir die Funktionalität betrachten, die er in seine beiden Open-Source-Projekte aufgenommen hat:
1. Das Xamarin Unity Forms-Projekt für Xamarin iOS und Android
Der Quellcode für dieses Projekt mit dem Titel UnityView4Xamarin.Forms ist auf GitHub zu finden.
Das ursprüngliche Android Xamarin/Unity-Bindungsprojekt mit dem Titel Xamarin with Unity App wurde von Egor Bogatov entwickelt und auf Github veröffentlicht.
Dieses Projekt enthält auch den Code und die Funktionalität, die es Android-Entwicklern ermöglicht, sowohl Unity als auch Xamarin in einer einzigen Anwendung zu verwenden, um an ARCore-Objekte zu binden, wie von Egor Bogotov entwickelt. Kurz gesagt ist ARCore ein Google-Produkt, dessen Hauptfunktion darin besteht, Augmented-Reality-Erlebnisse auf Android-Geräten zu schaffen.
Das Xamarin iOS-Bindungsprojekt, das von Florian Auer entwickelt wurde, wird in Punkt 2 unten beschrieben.
Zusätzlich bündelt das Unity4Xamarin.Forms-Projekt sowohl Xamarin.Android als auch Xamarin.iOS mit einer Abstraktionsschicht für Xamarin.Forms.
2. Das Xamarin iOS Bindungsprojekt
Kurz gesagt, dieses Projekt, wie es auf GitHub zu finden ist, erweitert die Funktionalität des Unity Xamarin Forms-Projekts für iOS (Punkt 1 oben); insbesondere den Unity Forms-Player.
An dieser Stelle ist es wichtig zu erwähnen, dass es manuelle Schritte gibt, die erforderlich sind, um Unity mit Xamarin für iOS auszuführen. Zusammengefasst muss es als Bibliothek mit Code von Unity3D, der auf GitHub zu finden ist, erstellt und ausgeführt werden.
Zusammengefasst sind die Schritte wie folgt:
- Öffnen Sie das Unity-Projekt und exportieren Sie es als iOS-Build.
- Ändern Sie die Build-Dateien entsprechend dem Code, der sich im Unterverzeichnis Build iOS Modifications befindet.
- Halten Sie sich strikt an die Schritt-für-Schritt-Erklärungen, die Sie in der Datei docs/ios.md finden.
Und warum?
Dafür gibt es mehrere Gründe, in erster Linie, um den Unity Framework API-Endpunktcode zu reduzieren und den Bindungsprozess zu vereinfachen.
Abschließende Überlegungen
Es besteht kein Zweifel, dass Florian Auers Lösung für das Unity 3D/Xamarin-Integrationsproblem einfach, benutzerfreundlich und verständlich ist und das Problem umfassend löst. Es bleibt also nur noch, alle drei oben beschriebenen Projekte zu klonen und mit der Entwicklung einer eigenen mobilen App mit modernstem 3D-Rendering für iOS und Android zu beginnen.
Und schließlich sind diese Projekte noch nicht abgeschlossen. Sie sind noch nicht abgeschlossen, und Hilfe ist willkommen, um einige der im GitHub-Repository markierten Probleme zu lösen.
Everything is very open with a precise clarification of the challenges. It was really informative. Your website is useful. Thanks for sharing!
Very good write-up. I absolutely love this website. Continue the good work!