【cocos2dx iOS】スプラッシュ画像と画面サイズの設定

【cocos2dx iOS】スプラッシュ画像と画面サイズの設定
   

この度は取り急ぎのブログの記事になります。もしかしたら後で修正をするかもしれません。
アプリが立ち上がった際に表示されるスプラッシュ画像(ラウンチ画像)と「画面サイズ」の設定方法をブログに書いていきたいと思います。
以外と難しかったです。

なおcocos2dxのバージョン3.3を利用しています。


事の発端

普段はRetina4(640 – 1136)で開発をして画面の確認をしています。
アプリがほぼ完成したので、Retina3.5(640 – 960)で画像の確認をしていた所問題が発生しました。
どの端末(iPhone5,iPhone6)に接続をしても画面のサイズがRetina3.5で表示されてしまうのです。
2015 1 18 fdsas


こんなことは初めてだったのでとても焦りました。

スプラッシュ画像と画面サイズ

先に答えを言いますと、原因は「スプラッシュ画像」でした。
スプラッシュ画像は、アプリが最初に立ち上がった際に表示される画像です。

私はスプラッシュ画像を、「Images.xcassets」で設定をしていました。
Images xcassets

原因

下記のホームページに問題点が詳しく載っているのですが、iOS7が問題だったようです。
これまでは、プロジェクトのOSをiOS5.1以上で開発をしていました。(プロジェクトを作成時の、デフォルト値)
2015-1-17-dasasda.png


ただ、iOS5ではこの度広告で利用するフレームワーク[GameController]が利用できないので、OSを7以上にしました。
これが原因だったようです。

修正

まずは、「Images.xcassets」に正しいサイズのスプラッシュ画像をしました。
ここで指定されたスプラッシュ画像のサイズに画面サイズが設定されるのです。

今までは、Retina3.5のスプラッシュ画像を全部に当てはめていました。
これをRetina4のスプラッシュに変更すると画像サイズが元に戻りました。

iPhone6 iPhone6 Plus

次に、iOS8から新しくデバイスのサイズが増えました。
これに対応をさせないといけません。

これは「Images.xcassets」では指定ができません。
「info.plist」で設定をします。
「info.plist」は「iOS」の「icons」の中にあります。
2015-1-18-dadas


ここに、下記サイトに書かれている項目を追加します。
「info.plist」を右クリックして「Opne As」=> 「Source code」で開くを入力しやすいです。
<key>UILaunchImages</key>
<array>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{320, 480}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 480}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-568h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-568h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{320, 568}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-667h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{375, 667}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-667h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{375, 667}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-736h</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{414, 736}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-736h</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{414, 736}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-Portrait</string>
        <key>UILaunchImageOrientation</key>
        <string>Portrait</string>
        <key>UILaunchImageSize</key>
        <string>{768, 1024}</string>
    </dict>
    <dict>
        <key>UILaunchImageMinimumOSVersion</key>
        <string>8.0</string>
        <key>UILaunchImageName</key>
        <string>Default-Landscape</string>
        <key>UILaunchImageOrientation</key>
        <string>Landscape</string>
        <key>UILaunchImageSize</key>
        <string>{768, 1024}</string>
    </dict>
</array>


「横向き・縦向き」で必要な方のみ記入しても大丈夫です。
後は、スプラッシュ画像のファイル名を、あなたの画像ファイルに置き換えます。
これで完了です。

最後に

とりあえず、これで画面のサイズを正しく取得できるようになりました。
ただ、全てのサイズに合わせた画像や座標を設定するのはとても大変ですので、これはマルチディスプレイ対応をする際に上手く調整をして上げるといいと思います。

私は、Retina3.5とRetina4はしっかり決めて、後のサイズは拡大で対応をしたいと思っています。
これは、iOS8が出る前から開発をしていた影響ですので、次のアプリ以降に関しては前もってどのサイズで開発を進めるかと考え直したいと思います。

今回はiOSのみですが、おそらくAndroidでは今まで通りに画面サイズを取得することはできると思います。(確認はしていない)
ただ、AndroidのOSの上がっているので心配です。

cocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Androidcocos2d-xではじめるスマートフォンゲーム開発 [cocos2d-x Ver.3対応] for iOS/Android
三木 康暉

技術評論社
売り上げランキング : 6996

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...