別のバンドルからスプライトキットシーンをロードしますか?

GlorySabre

swift 4.2を使用してSpriteKitフレームワークを作成しており、シーンとアクション用にいくつかの.sksファイルを含めたいと考えています。以下のコードを使用して、バンドルからシーンをロードしようとしました。

class func newGameScene() -> GameScene {

guard let gameScenePath = Bundle(for: self).path(forResource: "GameScene", ofType: "sks") else { assert(false) }

guard let gameSceneData = FileManager.default.contents(atPath: gameScenePath) else { assert(false) }

let gameSceneCoder = NSKeyedUnarchiver(forReadingWith: gameSceneData)

guard let scene = GameScene(coder: gameSceneCoder) else { assert(false) }


// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill

return scene

}

シーンをロードして提示します。(このコードは、ほとんどがこの問題をテストしているSpriteKit用のAppleのテンプレートからのものです。)

guard let view = view else {
      return nil
    }

    let scene = GameScene.newGameScene()

    view.presentScene(scene)

    view.ignoresSiblingOrder = true
    view.showsFPS = true
    view.showsNodeCount = true
    return nil

この場合、GameScene.sksとコードはApplesテンプレートから変更されていません。このコードと.sksアセットは動的フレームワークにあり、別のプロジェクトにインポートされます。

フレームワークにシーンを渡したビューにロードさせると、fpsとノード数は表示されますが、「Hello、World!」は表示されません。テキスト。

同じくテンプレートからコピーされた以下のコードでは、ブレークポイントは、マウスダウン時にこれらが呼び出されないことを示しています。

    #if os(OSX)
// Mouse-based event handling
extension GameScene {

  override func mouseDown(with event: NSEvent) {
    if let label = self.label {
      label.run(SKAction.init(named: "Pulse")!, withKey: "fadeInOut")
    }
    self.makeSpinny(at: event.location(in: self), color: SKColor.green)
  }

  override func mouseDragged(with event: NSEvent) {
    self.makeSpinny(at: event.location(in: self), color: SKColor.blue)
  }

  override func mouseUp(with event: NSEvent) {
    self.makeSpinny(at: event.location(in: self), color: SKColor.red)
  }

}
#endif

SpritKitがシーンをロードする方法に関係しているに違いないことはわかっていますが、解決策を見つけることができません。SpritKitの組み込みファイル初期化子のため、NSKeyedUnarchiverを使用する必要があります。

GameScene(fileNamed: "GameScene")

メインバンドルからのみロードされます。

上記では、コーダーを使用してファイルをロードできると仮定しましたが、Tomatoは、sksはコーダーを使用して保存されなかった可能性が高いと指摘しました。その場合、アップルから提供されたapiを使用して、スプライトキット内の別のバンドルからsksファイルをロードできない場合があります。答えにはコーダーが含まれていない場合があります。

Knight0fDragon

私が思っlet gameSceneCoder = NSKeyedUnarchiver(forReadingWith: gameSceneData)ように、あなたのために適切なコーダーを作成していませんでした。

ただやる

guard let scene = NSKeyedUnarchiver.unarchiveObject(with: gameSceneData) as? SKScene
        else{
            assert(false)
    }

これにより、ファイルが適切にアーカイブ解除されます。

GameSceneを使用する場合は、GameSceneがSKSファイルのカスタムクラスに設定されていることを確認してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

方法:1つの.csvからヘッダーレコードをスキップし、コマンドプロンプトまたはバッチを使用してレコードを別のcsvファイルにコピーします

分類Dev

依存関係プロパティを持つ値を、wpfのあるクラスから別のクラスのテキストボックスコントロールにバインドします

分類Dev

ロールアップは、Gulpからのコマンドラインでバンドルを作成しますが、ロールアップストリームパッケージからはバンドルを作成しません

分類Dev

ダウンロードフォルダから別のスプレッドシートのメインシートにスプレッドシートをローカルにコピーします

分類Dev

別のアプリケーションからのバックグラウンドブロードキャストを停止する

分類Dev

Linuxのコマンドライン(別名bashスクリプト)からデバッグモードでQtプロジェクトをビルドする

分類Dev

Webサイトから外部アプリケーションにテキストをドラッグアンドドロップします

分類Dev

Rシャイニーダッシュボード:ローカルファイルとオンラインデータベース(Googleスプレッドシートなど)の両方からデータをアップロードします

分類Dev

ループバックストレージコンポーネントのダウンロード方法のキャッシュを有効にしますか?

分類Dev

Node.js:大きなファイルをMongoDBにアップロードし、同じページのテキスト入力から別のコレクションにデータをアップロードします

分類Dev

Googleスプレッドシートのリンクから、プロトコルと国コードを使用してドメインを抽出します

分類Dev

P5.jsのドロップダウンリストのcsvファイルからヘッダー配列をトラバースします

分類Dev

ブートストラップモーダルダイアログのロード時に、コントローラーからデータを取得します

分類Dev

ioredisクライアントはハッシュスロットとノードアドレス間のマップをキャッシュしますか?

分類Dev

別のフラット/シンプルなハイブテーブルからmap [structs]を使用してハイブテーブルをロードする方法

分類Dev

eslintをフロントエンド、バックエンドにインストールし、フォルダーを個別にデプロイしますか、それともルートに1回インストールしますか?

分類Dev

WixインストールのドロップダウンリストでIISローカルWebサイトをバインドしますか?

分類Dev

クラウド上のサーバーからVPNのローカルホスト上の別のマシンにトラフィックをリダイレクトします

分類Dev

ウィンドウのサイズを変更すると、テキストがブートストラップボタンの境界からオーバーフローしたり、ボタンがdiv領域からこぼれたりします。

分類Dev

GoogleドライブAPIを使用してフォルダからスプレッドシートをダウンロードします

分類Dev

コマンドプロンプトから追加のドライバーをインストールできますか?

分類Dev

複数の画像をツールバーからキャンバスにドラッグアンドドロップします

分類Dev

フォワードプロキシを使用したクライアントからサーバーへのGRPC

分類Dev

インターネットにアクセスできるローカル サーバーを介して、クラウド上のプライベート仮想マシンからインターネットに接続する必要がある

分類Dev

同じラテックスソースからドキュメントの2つのバージョンをコンパイルします

分類Dev

コマンドラインからWindows(XP)にドライバーをインストールしますか?

分類Dev

AndroidのGoogleドライブからGoogleスプレッドシートをダウンロードする

分類Dev

クッキーを使用してリクエスト/レスポンスをバックエンドからフロントエンドにエクスプレスアンドリアクションで渡す以外の解決策はありますか?

分類Dev

Storagefileをあるリストビューから別のリストビューにドラッグアンドドロップします

Related 関連記事

  1. 1

    方法:1つの.csvからヘッダーレコードをスキップし、コマンドプロンプトまたはバッチを使用してレコードを別のcsvファイルにコピーします

  2. 2

    依存関係プロパティを持つ値を、wpfのあるクラスから別のクラスのテキストボックスコントロールにバインドします

  3. 3

    ロールアップは、Gulpからのコマンドラインでバンドルを作成しますが、ロールアップストリームパッケージからはバンドルを作成しません

  4. 4

    ダウンロードフォルダから別のスプレッドシートのメインシートにスプレッドシートをローカルにコピーします

  5. 5

    別のアプリケーションからのバックグラウンドブロードキャストを停止する

  6. 6

    Linuxのコマンドライン(別名bashスクリプト)からデバッグモードでQtプロジェクトをビルドする

  7. 7

    Webサイトから外部アプリケーションにテキストをドラッグアンドドロップします

  8. 8

    Rシャイニーダッシュボード:ローカルファイルとオンラインデータベース(Googleスプレッドシートなど)の両方からデータをアップロードします

  9. 9

    ループバックストレージコンポーネントのダウンロード方法のキャッシュを有効にしますか?

  10. 10

    Node.js:大きなファイルをMongoDBにアップロードし、同じページのテキスト入力から別のコレクションにデータをアップロードします

  11. 11

    Googleスプレッドシートのリンクから、プロトコルと国コードを使用してドメインを抽出します

  12. 12

    P5.jsのドロップダウンリストのcsvファイルからヘッダー配列をトラバースします

  13. 13

    ブートストラップモーダルダイアログのロード時に、コントローラーからデータを取得します

  14. 14

    ioredisクライアントはハッシュスロットとノードアドレス間のマップをキャッシュしますか?

  15. 15

    別のフラット/シンプルなハイブテーブルからmap [structs]を使用してハイブテーブルをロードする方法

  16. 16

    eslintをフロントエンド、バックエンドにインストールし、フォルダーを個別にデプロイしますか、それともルートに1回インストールしますか?

  17. 17

    WixインストールのドロップダウンリストでIISローカルWebサイトをバインドしますか?

  18. 18

    クラウド上のサーバーからVPNのローカルホスト上の別のマシンにトラフィックをリダイレクトします

  19. 19

    ウィンドウのサイズを変更すると、テキストがブートストラップボタンの境界からオーバーフローしたり、ボタンがdiv領域からこぼれたりします。

  20. 20

    GoogleドライブAPIを使用してフォルダからスプレッドシートをダウンロードします

  21. 21

    コマンドプロンプトから追加のドライバーをインストールできますか?

  22. 22

    複数の画像をツールバーからキャンバスにドラッグアンドドロップします

  23. 23

    フォワードプロキシを使用したクライアントからサーバーへのGRPC

  24. 24

    インターネットにアクセスできるローカル サーバーを介して、クラウド上のプライベート仮想マシンからインターネットに接続する必要がある

  25. 25

    同じラテックスソースからドキュメントの2つのバージョンをコンパイルします

  26. 26

    コマンドラインからWindows(XP)にドライバーをインストールしますか?

  27. 27

    AndroidのGoogleドライブからGoogleスプレッドシートをダウンロードする

  28. 28

    クッキーを使用してリクエスト/レスポンスをバックエンドからフロントエンドにエクスプレスアンドリアクションで渡す以外の解決策はありますか?

  29. 29

    Storagefileをあるリストビューから別のリストビューにドラッグアンドドロップします

ホットタグ

アーカイブ