2014-05-05 41 views
6

Ich habe gesucht und gesucht, aber finde keine Lösung, die für das, was ich versuche, funktioniert, und ich bin fast an dem Punkt, wo ich fragen muss, ob es ist sogar möglich.Zwischen Monogame und UIKit wechseln

Ich benutze Xamarin Studio, um eine iOS App zu entwickeln. Ich habe ein paar verschiedene Bildschirme als UIViewControllers eingerichtet und sie funktionieren gut. Der Kern der App ist jedoch ein Spiel und ich möchte Monogame so verwenden, wie ich es vorher benutzt habe und es hat mir Spaß gemacht, damit zu arbeiten.

Grundsätzlich muss ich von einem UIViewController auf die Game-Klasse wechseln. Ich kann dies tun, indem ich einfach ein neues Game-Objekt erstelle und Run() anrufe, aber ich kann nicht herausfinden, wie ich das Spiel verlassen kann, wenn ich es brauche, und die Kontrolle wieder an den UIViewController zurückgeben.

Hat jemand das in einer App getan? Ich habe alles versucht, was ich mir vorstellen kann, aber nichts scheint den Trick zu machen. Ist es überhaupt möglich? Oder muss ich es wiederholen, damit Monogame alles handhabt, sogar all die anderen Sachen in der App, die nicht Teil des eigentlichen Spiels sind?

Danke!

+0

Ich weiß nicht genau, was Sie zu tun versuchen, aber haben Sie darüber nachgedacht, eine Schnittstelle in Ihre Spielklasse zu integrieren? – craftworkgames

+0

Ich habe einen TabController. Eines der Spiele ist ein "Spiel" -Reiter. Sobald diese Registerkarte angeklickt ist, gibt es ein paar Optionen. Einer davon ist ein Button, "Neues Spiel", mit dem ich ein Game-Objekt starten möchte. Sobald das Spiel vorbei ist, möchte ich zum Spiel-Tab zurückkehren, von dem der Benutzer kam, und das Spiel-Objekt beenden. – halterdev

Antwort

4

Es gibt ein paar hacky Wege, die ich fühle, dass dies funktionieren wird, ohne MonoGame zu ändern.

1. Option:

  1. Wenn Ihre App gestartet wird, Ihre Game Klasse starten, wie Sie würde ein normales monogame Spiel
  2. Um einen Controller anzuzeigen vorhanden es modal über Oberseite des Spiels
  3. zurückzukehren das Spiel, entlassen Ihre modal Controller

So zum Beispiel, einen Controller zu zeigen:

var gameController = game.Services.GetService(typeof(UIViewController)) as UIViewController; 
gameController.PresentViewController(new YourController(), true, null); 

Dann können Sie einfach DismissViewController anrufen, um es zu verstecken. Ich habe das für die Implementierung von Game Center-Sachen verwendet.

Leider müssen Sie ändern, wie MonoGame funktioniert, wenn Sie Ihr MonoGame-Spiel nach einen UIKit-Controller zeigen möchten.

Eine andere Option ist, im Grunde eine UIView über die Ansicht Ihres MonoGame hinzuzufügen. So etwas wie das:

var gameController = game.Services.GetService(typeof(UIViewController)) as UIViewController; 
var view = new YourView(); 
gameController.View.AddSubview(view); 

Sie müssen etwas Logik hinzufügen, um das Spiel anzuhalten, wenn Sie diesen Weg nehmen. Ich habe diese Option zuvor für iAd usw. verwendet. Sie können dies auch mit den Ansichten anderer Controller tun, wie oben in Ihrem Tab-Controller-Beispiel.

+0

Hey, Entschuldigung für die verzögerte Antwort. Ich werde es versuchen müssen, weil ich es einfach nicht mit UIKit arbeiten kann und dann das MonoGame-Zeug hineinspritze. Ich habe jedoch eine Frage, wie funktioniert das, um die Erinnerung zu verbessern? Ist es auf diese Weise sehr festgefahren? – halterdev

+0

Es sollte in Ordnung sein. Stellen Sie sicher, dass Sie den Überblick behalten und entfernen, wenn Sie keine UIKit-Dateien mehr verwenden. – jonathanpeppers

+0

Hat diese Antwort für Sie funktioniert? Sie können sich die Zeit nehmen, um als Antwort zu markieren, oder einen neuen Kommentar hinzufügen. Vielen Dank. – jonathanpeppers