skscene

___ qstnhdr ___ So rufen Sie eine Methode von ViewController in GameScene auf ___ answer30861164 ___

Ich habe das create protocol gemacht, Ich habe 3 Spielszenen (GameScene, GamePlayScene, GameEndScene) und einen Gamecontroller (GameViewController)

Erstellen Sie zuerst gameProtocol

%Vor%

implementieren Protokoll in GameViewController

%Vor%

Setze die Delegate-Eigenschaft in die GameScene-Klasse

%Vor%

und setze das Protokoll auch in GamePlayScene

%Vor%

und zuletzt, setzen Sie die Eigenschaft delegate und rufen Sie die gameOver-Funktion

auf %Vor%

Ich hoffe, dass Arbeit und kann Ihnen helfen

Mit freundlichen Grüßen, Donny

    
___ tag123ios ___ iOS ist das mobile Betriebssystem, das auf dem Apple iPhone, iPod touch und iPad ausgeführt wird. Verwenden Sie dieses Tag [ios] für Fragen zur Programmierung auf der iOS-Plattform. Verwenden Sie die verwandten Tags [objective-c] und [swift] für Probleme, die für diese Programmiersprachen spezifisch sind. ___ qstntxt ___

Ich habe eine Methode, die in meinem viewController einen benutzerdefinierten Übergang hat, der folgendermaßen aussieht:

%Vor%

Ich rufe die Methode so in GameScene.swift auf:

%Vor%

Ich habe den Namen des Segments überprüft und es ist korrekt. Wann immer ich das in meiner GameScene.swift Datei anrufe, bekomme ich die SIGABRT Nachricht und ich weiß nicht warum. Ich versuchte, die Funktion mit nur einer println () Nachricht aufzurufen und es funktionierte.

Jeder Hinweis, warum dies auftritt und wie ich die Methode in der GameScene.swift-Datei erfolgreich aufrufen kann, wäre sehr zu begrüßen.

Danke!

P.S. Hier ist das Absturzprotokoll:

%Vor%

es sagt, es gibt keine segue id. mit "GameEnd", aber es gibt einen und es funktioniert, wenn auf dem Viewcontroller

verwendet     
___ tag123swift ___ Swift ist eine universelle Open-Source-Programmiersprache, die von Apple Inc. für ihre Plattformen und Linux entwickelt wurde. Verwenden Sie das Tag nur für Fragen zu Sprachfunktionen oder für Code in Swift. Verwenden Sie die Tags [ios], [osx], [watch-os], [tvos], [cocoa-touch] und [cocoa] für (sprachunabhängige) Fragen zu den Plattformen oder Frameworks. ___ answer28187085 ___

Der Grund dafür ist, dass Sie eine neue Instanz von %code% erstellen und dann %code% aufrufen. Was Sie wirklich tun möchten, ist Ihre bestehende %code%

zu referenzieren

gibt ein paar Möglichkeiten, dies zu tun, ich gebe dir ein Beispiel.

Fügen Sie Ihrer GameScene-Klasse eine viewController-Eigenschaft hinzu

%Vor%

in Ihrer GameViewController-Datei

%Vor%

Jetzt haben wir einen Verweis auf viewController, wir können es in unserer GameScene-Klasse verwenden

%Vor%     
___ answer30517442 ___

Ich weiß nicht, ob das noch relevant ist, aber ich möchte Ihnen eine Lösung für dieses Problem vorstellen.

Wie Sie hier sehen können Swift iOS: Führen Sie eine Segue von einer Instanz in einem ViewController zu einem anderen ViewController Ich hatte vor einiger Zeit genau das gleiche Problem, das ich mit Protokolle beheben konnte.

Das Problem ist, dass Sie "performSegueWithIdentifier (" GameOver ", sender: nil)" nur in Ihrer GameViewController-Klasse aufrufen können, aber Sie möchten es von Ihrer Gamescene aus ausführen.

Dafür erstellst du in deinem GameScene ein Protokoll wie dieses:

%Vor%

und eine Variable für den Delegierten in der Gamescene:

%Vor%

In Ihrer GameViewController-Klasse müssen Sie den Delegaten in der Klassendefinition hinzufügen

%Vor%

und setze den Delegaten der Szene in der viewDidLoad-Funktion deines GameViewControllers auf self:

%Vor%

Der letzte Schritt besteht darin, die Funktion gameOverDelegateFunc () in Ihrem GameViewController zu implementieren:

%Vor%

Das ist alles, was Sie tun müssen.

Wann immer du diese Sequenz in deinem GameScene durchführen willst, musst du die Funktion einfach über den Delegaten aufrufen:

%Vor%

Ich hoffe, dass alles klar ist und ich helfen konnte,

Grüße, Phil

    
___ tag123spritekit ___ SpriteKit ist Apples Framework für die Erstellung von 2D-Spielen für iOS 7+ und macOS 10.9+. Es ist eine 2D-Rendering-Engine in Kombination mit einer Physik-Engine. Es ist kompatibel mit Objective-C und Swift. ___ answer28422242 ___

Ich habe nicht genug Rep, um auf Ihren letzten Kommentar zu antworten, aber wenn Sie diesen Fehler immer noch erhalten, liegt das daran, dass Sie diesem Segment noch keinen Namen (oder Bezeichner) in Interface Builder gegeben haben!

Wenn Sie mit der Maus klicken und ziehen, um Übergänge zwischen Ansichtscontrollern im Interface Builder zu zeichnen, können Sie jeden Übergang anhand des Kreissymbols auswählen, das in der Mitte der Überschriftszeilen angezeigt wird. Dann, wenn Sie %code% aufrufen, sollte es funktionieren!

So könnte das kreisförmige Symbol aussehen, abhängig vom Typ des Abschnitts:

Wenn Sie ein wenig unsicher sind, schauen Sie sich dieses Tutorial oder dieser !

    
___ tag123uiviewcontroller ___ Die UIViewController-Klasse verwaltet die Ansichten in iOS-Apps und vermittelt die Interaktion zwischen den Ansichten einer App, den zugrunde liegenden Modellobjekten und dem gesamten Workflow. ___ tag123kskene ___ Ein SKScene-Objekt repräsentiert eine Inhaltsszene in Sprite Kit. Eine Szene ist der Wurzelknoten in einer Struktur von Sprite Kit-Knoten (SKNode). Diese Knoten stellen Inhalte bereit, die von der Szene animiert und zur Anzeige gerendert werden. Um eine Szene anzuzeigen, präsentieren Sie sie von einem SKView-Objekt. SKScene ist Apple-Technologie für iOS 7.0 und höher. ___
1
Antwort

SpriteKit- Wie man ein SKScene vergrößert und verkleinert?

Wenn ich ein Spiel in SpriteKit mache, das eine große "Welt" hat, und ich möchte, dass der Benutzer die Möglichkeit hat, die SKScene zu vergrößern und zu verkleinern, wie würde ich dann vorgehen? Oder, um es einfacher zu machen, wie kann ich...
18.08.2015, 17:31
4
Antworten

So rufen Sie eine Methode von ViewController in GameScene auf

Ich habe eine Methode, die in meinem viewController einen benutzerdefinierten Übergang hat, der folgendermaßen aussieht: %Vor% Ich rufe die Methode so in GameScene.swift auf: %Vor% Ich habe den Namen des Segments überprüft und es ist kor...
28.01.2015, 04:07