13

私のサンプル プロジェクトは削除されたので (これはテストがはるかに簡単になると思いました)、ポイントを説明するためにいくつかのコードと画像を投稿します。

サンプル画像はこちら

2倍の画像

私の3倍の画像

私のアトラスのセットアップ:

ここに画像の説明を入力

私の起動イメージのセットアップ:

ここに画像の説明を入力

これらのスプライトをシーンに追加するコード

override func didMoveToView(view: SKView) {
    let texture = SKTextureAtlas(named: "scenery")
    let test = SKSpriteNode(texture: texture.textureNamed("test"))
    test.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
    self.addChild(test)

}

これらは私の結果です:

iPhone 5 シミュレーター:

ここに画像の説明を入力

iPhone 6 プラス シミュレーター:

ここに画像の説明を入力

アセット カタログを使用するように起動イメージを変更してみました。次に、iPhone 6 plus は 2 倍の画面をアップスケールするようです。まだ 2x 画像をロードしていますが、拡大しています。

3x 画像をロードし、2x 画像に合わせてスケーリングする必要があります。

以下のガブーの答えは、私を正しい方向に向けました。新しいプロジェクトに取り組んでいます。ただし、実際の SpriteKit プロジェクトに彼のソリューションを使用すると、3x 画像は縮小されません。それらは本来あるべきサイズよりも 3 倍大きいです。

4

5 に答える 5

5

アトラスを作成する新しい方法を使用している場合、現在は機能しているようです。重要なことは、Deployment target>= 9.0 である必要があることです ...

を選択Assets.xcassetsしてクリックして + サインし、新しいスプライト アトラスを作成します。

ここに画像の説明を入力

「New Sprite Atlas」オプションを選択し、@2x および @3x アセットを追加します。

ここに画像の説明を入力

次に、コードで次のようにします。

let sprite = SKSpriteNode(texture: SKTextureAtlas(named: "Sprites").textureNamed("test"))
sprite.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(sprite)

ヒント:

シミュレーターでテストしている場合は、これを試す前に、シミュレーターのコンテンツと設定をリセットしてキャッシュをクリアしてください。

于 2016-02-15T13:15:50.673 に答える
1

Xcode 6.2 は、1 つのアトラスから @3x および @2x 画像をロードするようになりました。画像名の末尾に @2x/@3x を付けないと、1x サイズがロードされます (そして、画像自体のサイズが変更されるようです)。

于 2015-03-13T04:14:39.070 に答える
0

このバグはまだ解決されていません。@2x 画像だけを使用すると、アプリのビジュアルが壊れます。代わりに、画面の縮尺を見て適切な画像を選択してください。

textureName = [UIScreen mainScreen].scale > 2.9 ? @"awesome@3x" : @"awesome";
于 2015-11-16T17:09:21.027 に答える