問題タブ [sktextureatlas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1901 参照

drawing - スプライトキットを使用して単一の描画パスでノードをレンダリングしますか?

スプライトキット テクスチャに関する情報を探し回っていたときに、次の引用に出くわしました。

ノードのすべての子が同じブレンド モードとテクスチャ アトラスを使用する場合、スプライト キットは通常、これらのスプライトを単一の描画パスで描画できます。一方、新しいスプライトごとに描画モードが変わるように子が編成されている場合、スプライト キットはスプライトごとに 1 つの描画パスとして実行される可能性があり、これは非常に非効率的です。

しかし、これをチェックしてください:

同じテクスチャのタイル (単なる色ではなく、テクスチャであることを保証します) テクスチャのないタイル

独自のテクスチャを持つタイル 織り目加工のタイル

使用されるすべてのテクスチャは同じアトラスからのものですが、描画カウントには 40 の違いがあります。

「アトラス」という言葉を間違って解釈していますか?

これは私が私の画像を保存する場所です:

テクスチャアトラス

私の例は「テクスチャアトラス」ですか、それともここでの「アトラス」の定義は、必要なすべての画像を含む単一の .png であり、個々のタイルはそこからスライスされていますか?

それとも、おそらくロード方法/他の何かに問題がありますか?

ありがとう!

0 投票する
1 に答える
449 参照

ios - SKTextureAtlas の画像サイズを超えていますか?

今日、既存のアトラスに画像ファイルを追加すると、「アトラスの画像サイズを超えた」SKTextureAtlasという警告が表示され、アトラスが 2 つに分割されるという警告が表示されました (エディターで同じように見えるため、おそらくコンパイル時に)。コンパイル後、警告が消え、それについての言及がさらに見つかりましたか?

それ以来、2 つの新しいアトラスを作成して自分でアトラスを手動で分割しました。私の質問は、分割を自分で行う必要があるかどうか、これは本当にアトラスを 2 つに分割する必要があることを示す警告なのか、それとも Xcode がコンパイル時にこれを行うつもりですか?また、Xcode に分割を行わせる際にオーバーヘッドはありますか。自分で行うのが最善であると想定しています。

0 投票する
1 に答える
206 参照

ios - グループではなくフォルダー参照を使用してテクスチャ アトラスを作成する

私のプロジェクトのリソースの多くは、グループではなくフォルダー参照に配置されています。つまり、黄色のフォルダーではなく青色のフォルダーです。これにはいくつかの理由があります - 私は両方の解決策を検討しましたが、フォルダ参照がより良い選択肢でした (私は次のようなことをします)

imagePaths = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:directory];

)

このガイドによると、含まれているフォルダーの名前を変更するだけですが、アセットを含むフォルダーの名前をフォルダー.atlas に変更すると、これは文字通りパス名の一部として取得され、コンテンツは見つかりません。

TexturePacker などを使用して手動でアトラスを生成する唯一の方法はありますか? 私のコードはパス名に大きく依存しているため、何度も書き直す必要があります...

0 投票する
1 に答える
114 参照

ios - SKTextureAtlas フィルタリング最近傍

私はSKTextureAtlasSKTextures のリストを含む を持っていますが、そこから SKTexture をロードし、そのフィルタリングが SKTextureFilteringNearest であると述べるたびにLinearでフィルタリングするという問題があります。

より低いiOSでのみその問題があります7.1が、7.1ではすべて正常に動作します。

編集#1

Theis Egeberg は次のように提案しました。

7.1 より前の動作では、フィルタリング モードがアトラス内のすべてのテクスチャ間で共有されていると確信しています。7.0 で "Nearest" を使用する場合は、最も近いテクスチャアトラスと線形のテクスチャアトラスを 1 つずつ作成する必要があります。もちろん、両方をカプセル化するヘルパー クラスを作成できます。」

どうすれば実際にそれを行うことができますか?

0 投票する
1 に答える
137 参照

sprite-kit - スプライト キットのテクスチャ アトラスがメモリに残っていますか?

現在、スプライト キットを使用して、タイル マップ上でシューティング タイプのゲームに取り組んでいます。「敵」は、すべてのアニメーション フレームを保存する一連のテクスチャ アトラスからロードされます。これまでのところ、すべての敵とプレイヤーとともにマップ上のテクスチャは、平均で約 110 ~ 130 MB のメモリを消費しています。私が観察している問題は、レベルを切り替えるときです。基本的に、そのレベルの新しいテクスチャは、敵のテクスチャとともにロードされます。最初のレベルから離れたときに、すべてのテクスチャ アトラスの割り当てを解除しようとしましたが、メモリ消費量はまだ増えているようです。私はそれが 150 から 180、時には 200 mb になるのを見てきました。

テクスチャ アトラスは、逆参照された後もメモリに保持されますか? いくつかの異なるレベルがあり、それぞれに独自のマップと独自の敵があることを考えると、これは潜在的な問題であると考えています. 私の他の読書に基づいて、これは事実かもしれません。スプライト キットがいつ、どこでテクスチャ アトラスの割り当てを解除するかを処理している場合、使用しているテクスチャの量で最終的にメモリ警告の問題が発生するかどうかはわかりません。

0 投票する
1 に答える
113 参照

sprite-kit - SpriteKit のテクスチャ アトラスからテクスチャをフィルタリングできません

非常に悩ましい問題を抱えています...

私はピクセル ベースのアートを使用するゲームを持っているので、使用されるテクスチャは 8x8 で、128x128 または必要に応じて拡大されます。

これを行うには、私がする必要があるのは言うだけですtexture.filteringMode = SKTextureFilteringNearest

これで、テクスチャ アトラスを除いて、ほぼすべての機能が使用できるようになりました。テクスチャ アトラスからテクスチャをプルすると、テクスチャがフィルタリング モードの切り替えを拒否します。注意すべきことの 1 つは、テクスチャ アトラスをセットアップする標準プロセスからは機能するように見えることですが、テクスチャ アトラスがシングルトンの場合は機能しません。

通常は、設定が間違っていると思いますが、この問題は SpriteKit にあると思います。理由は次のとおりです。

1) バグは最近まで発生しておらず、何も変更していませんでした

2) このバグは iOS 7 でのみ発生し、7.1 または 8+ では発生しません。

3) 問題は、フィルタリング モードが間違っているということではありません。フィルタリング モードが最も近い 0 に設定されています (テストし、すべてのフレームをログに記録し、モードは正しかったのですが、視覚的には正しくありませんでした)。

そのため、レンダリングのバグです。しかし、それは意味がありません。特に、少しうまくいったように見える場合はなおさらです。他に何か意見はありますか?私は何かに感謝します、私もいくつかのことを試してみます。ありがとう!

注-コードはそのままでios7.1+で問題なく機能することを強調したいので、コードは何らかの形で機能します...しかし、ある時点で機能したため、7.1固有の機能でもありません。