2015-11-28 5 views
5

プロジェクトフォルダにアトラスを置く代わりに、XCAssetsフォルダに新しいスプライトアトラスを使用しました。しかし、私がこれをしたとき、私のノードはもはやバッチレンダリングされなくなり、非効率的な描画呼び出しが多数発生していました。これは、アトラスを使用する目的を完全に破ります!メジャーなバグ、XCAssetsフォルダで作成されたスプライトアトラスがバッチレンダリングをサポートしていません

これは私がアトラスを取得するために使用したコードです。

let atlas = SKTextureAtlas(named: "Sprites") 

"スプライトは" XCAssetsフォルダに作成されたスプライトアトラスです。

回避策があるか、プロジェクトフォルダにSprite Kit Atlasesを作成したことがありますか?

私はXcode 7.2 betaを使用しています。

私が新しいスプライトキットアトラスを使用したい理由は、thisの問題のためです。

+0

このバグは、Xcode 7.2 beta&El Captainにのみ関連していますか?ヨセミテ、Xcode 7.1.1、iOS 9.1で作業しています。 – Whirlwind

+0

@Whirlwind私はベータ版を使用していましたが、以前のバージョンでも問題が発生していることを思い出しました。デプロイターゲットはテスト時にどのように設定されましたか? –

+0

この特定のケースでは、私の展開ターゲットは9.1に設定されていました。 – Whirlwind

答えて

4

質問を入力したときに回避策が見つかりました。あなたはそのようXCAssetsフォルダ内の画像からプログラムSKTextureAtlasを作成することができます。

let atlas = SKTextureAtlas(dictionary: ["Head":UIImage(named: "Head")!, "Body":UIImage(named: "Body")!]) 

これは明らかに単なる回避策です。うまくいけば、AppleはSprite Kitの後のバージョンでこれを修正してくれることを願っていますこれは、すべての開発者が知っておくべき深刻なパフォーマンスバグです。 Appleのサンプルプロジェクトでも新しいSprite Atlasesが使用されるため、バッチレンダリングが機能すると思います。アップルから

アップデート1 応答:私たちはこの問題について知らせるため

感謝。私たちは現在 の原因を調査しており、将来のiOS アップデートに修正を組み込む予定です。その間に、適用できる回避策が2つあります。 1. .atlasフォルダにテクスチャアトラスを作成して使用します。 2.アセットカタログでテクスチャアトラスを使用し続けますが、展開ターゲットはiOS 8.0に設定されています。

アップデート2 Appleが調査に行くiOSの10に固定されている可能性が言いました。

+0

この問題がiOS 10で解決されたかどうかは分かりますか? – claassenApps

+0

@claassenAppsよく分かりませんが、しばらくの間、Sprite Kitを使って喜んでいませんでした。学期が終わってからもう一度やり直す。私は、私が行ったときに私のSprite Kitのバグ投稿をすべてiOS 10用に更新します。テストする機会があれば、ここであなたの所見を投稿してください。 –

0

これはiOS 10で修正されているようです。唯一の迷惑なことは、別々の地図にある場合でも同じ名前の2つの画像を持つことができないことです。

編集:これはiOS 10でのみ修正されています.iOS 9で実行している場合、アプリがクラッシュする大規模なメモリリークがあります。

+0

私はこの時点で解決されたとは思わない、Mac用のテスト – CalixJumi

関連する問題