2017-12-03 10 views
5

SpriteKitシーンエディタを使用しているときに予期しない動作が発生しました。Xcode 9.1(および9.2) - 参照されたスプライトが実行されていませんScene Editorで追加されたアクション

シーンにスプライトを作成し、アクションを追加してシーンエディタを使用して移動させました。エディタでアニメーションボタンをクリックすると、アクションがうまく動作します。シーンエディタでSKReferenceNodeオブジェクトを使用して、このシーンへの参照をメインシーンに追加します。スプライトはエディタで期待通りにメインシーンに表示されます。ただし、アプリケーションをビルドして実行すると、スプライトは表示されますが、アクションは実行されません。私はこれをXcode 9.2ベータ版で試してみて、同じ結果を得ました。 スプライトシーンをメインビューコントローラから直接ロードすると、すべてのアクションが期待どおりに実行されるため、参照されたノードで問題と思われます。 メインシーンのswiftクラスでdidMove(to :)をオーバーライドしてブレークポイントを設定すると、ブレークポイントに達したときにcontinueを押すだけで、すべてのアクションが参照されたスプライトを期待どおりに再生することもわかりました。ブレークポイントを無効にすると、参照されたスプライトでアクションは実行されません。 (私の回避策は、単にブレークポイントを使用し、続行ボタンを押すことです)

もう1つ興味深い観察です。以前のバージョンのXcodeで作成されたサンプルプロジェクトを開き、参照されたスプライトがそのアクションを実行しました。この古いSKSファイルを私のプロジェクトにコピーし、Actionsはうまくいきました... SKSファイルを編集するまで(別のアクションを追加するまで)、彼らは再び働きませんでした。

+1

シーンがビューに移動したときにisPausedがtrueに設定されているバグがあります。すべてのノードをリセットするためにscene.isPaused = falseを呼び出してください。 – Knight0fDragon

+0

ありがとう、ありがとう。面白いことに、SKReferenceNodeの多数のノードと参照されているSceneを動作させるためにisPausedを設定して実験した後、繰り返してすべてを削除した後、変更なしで動作します。 – Roger

+0

あなたは反復する必要はありません、scene.isPausedはあなたのための反復を行います(彼らのひどいデザイン) – Knight0fDragon

答えて

0

私は先日同様の質問を: XCode 9: SKEditorReference doesn't allow animations?

私は仕事にこれを取得することができた唯一の方法は、正確なスプライトノード上isPausedを入れていた私は、REF内(アニメーション化しようとしていましたノード - 私はsksシーン/ファイル全体を作成し、それを私のメインシーンにドラッグアンドドロップしました)。

トップレベルでは、メインシーンdidMoveは何の効果も見られないようにしようとしましたが、isPaused = falseをメインリファレンスノードに追加しても効果はありません。それは、アニメーション化しようとしていた実際のスプライトをisPaused = falseに追加したときにのみ機能しました。メイン&のrefノードからisPaused = falseを削除しました。スプライトノード(refノード内)にまだ残っている限り、私はアニメーション化しようとしていました:成功。

参照ノード内のスプライトでは、isPaused = falseが必須であるようです。

関連する問題