2016-07-30 14 views
0

Würde jemand bitte zeigen Sie mir ein kleines Code-Beispiel geschrieben in C# innerhalb der Xamarin.iOS-Framework, die Textur-Atlanten laden würde?Wie lädt man Texturatlas (SKTextureAtlas) in Xamarin.iOS (in C#)?

Xamarin Website hat diese Seite:

https://developer.xamarin.com/api/type/MonoTouch.SpriteKit.SKTextureAtlas/

Auf dieser Webseite, listen sie die vielen Methoden, die die Texturatlanten vorzuladen. Aber, ich bin daran interessiert sind nur in diesen zwei spezifischen Methoden:

PreloadTextures (SKTextureAtlas [], NSAction)

PreloadTexturesAsync (SKTextureAtlas [])

ich beide Methoden erraten gut funktionieren wird für mein Spiel. Leider weiß ich nicht, wie man sie in C# innerhalb des Xamarin.iOS-Frameworks richtig aufruft.

Während es viele Codebeispiele zum Vorladen von Texturatlanten im Web gibt, sind diese Beispiele in Objective-C geschrieben, und leider weiß ich nicht, wie ich Objective-C-Code in C# -Code umwandeln soll.

Also, ich würde sehr schätzen, wenn Sie mir zeigen könnten, wie man einige kleine Code-Proben in C# innerhalb des Xamarin.iOS-Framework, die Textur-Atlanten vorladen, mit den 2 Methoden, die ich oben erwähnt.

Vielen Dank.

Antwort

1

Ich bin kein Experte für Spieleentwicklung, noch war ich an einem beteiligt, aber ich bin einigermaßen mit dem Xamarin.iOS vertraut, um die Objective-C-Codes in Xamarin C# -Codes zu übersetzen.

Zuerst müssen Sie eine „Texturatlas“ Array

Sie
var textureCollection = new SKTextureAtlas[] 
{ 
    SKTextureAtlas.FromName("firsttexturename"), 
    SKTextureAtlas.FromName("secondtexturename"), 
}; 
await SKTextureAtlas.PreloadTexturesAsync(textureCollection); 
// rather than using a completion handler like in ObjC xamarin uses the c# 5's await keyword to achieve similar functions 
//You can do what you want after it has preloaded here 
//for example 
this.StartScene() 
+0

Vielen Dank für Ihre ausgezeichnete Antwort sehr viel zu schaffen. Ich werde heute deinen Code ausprobieren und ihn als "Beantwortet" markieren. BTW, ich frage mich, ob ich die Methode mit dem Completion-Handler "PreloadTextures (SKTextureAtlas [], NSAction)" verwende, bedeutet es, dass ich noch andere Dinge tun kann, wie zum Beispiel das Ausdrucken von Textnachrichten während des Vorladens? Oder bedeutet es, dass ich immer noch nichts im Code tun kann, während das Vorladen noch läuft? (Danke nochmals im Voraus.) – Thanh

+0

Von was ich in der Apple-Dokumentation gelesen habe, wird diese Methode im Hintergrund ausgeführt, die Xamarin-Async-Methode ist einfach ein Wrapper darum und es gibt keinen Grund, warum Sie den NSAction-Rückruf nicht verwenden können Mechanismus. Alternativ können Sie Task.ContinueWith verwenden, um in der C# -Welt zu bleiben. –

+0

Ihre Erklärung ist absolut richtig. Alle async/await-Methoden in C# und iOS laufen nur im Hintergrund und blockieren NICHT den Fluss des Programms oder der App. Ich probiere deinen Code heute aus, und es funktioniert einwandfrei. Das ist wundervoll. Vielen Dank für deine Hilfe. (Stackoverflow ist ein tolles Forum :-)) – Thanh