0
Help us understand the problem. What are the problem?

posted at

updated at

Xcode 5でSpriteKitのSKTextureAtlasを使用する

SwiftUI ベースのプロジェクトで SpriteKit の SKTextureAtlas を使用したかったのですが、プロジェクトに ".atlas" サフィックスのフォルダを作成し、コンパイル時にアトラスを生成させる方法ではできなかったので、調査しました。

結論から述べますと、アセットカタログ (Assets.xcassets) に作成したフォルダをアトラスとして使用できます。

具体例を示します。次の通りにアセットカタログに "cat" フォルダを作成し、猫が歩くアニメーションのフレーム画像 (cat-walk.0 〜 3) を保存します。

Assets.xcassets
├─AccentColor
├─AppIcon
└─cat
  ├─cat_walk_0
  ├─cat_walk_1
  └─cat_walk_2

ソースコードで、SKTextureAtlasnamed 引数に作成した "cat" フォルダの名前を指定し、インスタンスを生成します。インスタンスの textureNamed メソッドを使用すると、同フォルダに保存したフレーム画像をアトラス内の名前付きテクスチャとして参照できます。

import SpriteKit

let atlas = SKTextureAtlas(named: "cat")
let textures = [
    atlas.textureNamed("cat_walk_0"),
    atlas.textureNamed("cat_walk_1"),
    atlas.textureNamed("cat_walk_2"),
]

アトラスの名前はフォルダの名前ですが、半角英数字のみ (?) で指定しなければいけないようです。フォルダの名前に ". (ドット)" を含む場合は、一番最初の "." より手前の文字までをアトラスの名前として認識しました。又、フォルダの名前に "- (ハイフン)" を含む場合は、アプリケーションが異常終了しました。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?