U
タブ 05モバイルへ書き出す7 レッスン — タップで開く
02 / 07 · 9 分
モバイルへ書き出す

効いてくる Player Settings

ここまでのプロジェクト

Assets/

link.xml

Scripts/

MobileBoot.cs

プロジェクトの設定

Android moduleplatform switchpackage nameIL2CPP + ARM64

すでにあるものこのレッスンで追加

tab 03 で作ったタッチ用 canvas があるからこそ、この tab が重要になります。向きの設定、safe area、CPU のアーキテクチャが正しい位置に揃っていないと、Knight の操作ボタンが親指の届かない場所に置いておかれます。

Player Settings には二百近い選択肢がありますが、ビルドが動くか、出荷できるか、審査を通るかを左右するのはその中の十二項目です。

アニメーション図

向きと safe area の設定が、UI を実機で生かすも殺すも決めます。

識別情報 — 初めてのビルド前に決めておく

  1. 1

    Edit▸Project Settings▸Player で Company Name と Product Name を設定します。

  2. 2

    Other Settings → Package Name は com.yourstudio.yourgame の形にします。これはあとから変更できません——Google Play はこの名前だけでアプリを永遠に識別し続けるからです。

  3. 3

    Version は 1.0.0、Bundle Version Code は 1。アップロードのたびに code を 1 つ上げてください——同じ番号だと Play が拒否します。

  4. 4

    アプリアイコンは Icon → Adaptive で設定します。Android は前面レイヤーと背面レイヤーの二枚が必要で、ベタ塗りの一枚画像では代わりになりません。

解像度と表示の設定

  • Default Orientation は Landscape Left、または Portrait にします。まともな向きが一つしかないのに Auto Rotation を有効にすると、プレイヤーをいらつかせるだけです。

  • Render Outside Safe Area はチェックを入れたままにしてゲームを画面いっぱいに描画し、Notch の扱いは UI 側で Screen.safeArea を使って行います。

  • Optimized Frame Pacing は、カクつきが確認できたときだけ外してください。多くの機種では入れた方が良くなります。

Other Settings — ビルドを壊す連中

  1. 1

    Scripting Backend は IL2CPP にします。64-bit では Mono が Play Store に認められていませんし、そもそも IL2CPP の方がずっと高速です。

  2. 2

    Target Architectures は ARMv7 と ARM64 の両方にチェックを入れます。ARM64 は必須で、ARMv7 は古いスマホを取りこぼさないために残します。

  3. 3

    Minimum API Level を 23 か 24(Android 6〜7)にすればほぼすべてのユーザーに届きます。Target API Level は Automatic(highest installed)のままで構いません。

  4. 4

    Managed Stripping Level は Medium です。High はもっと多く削りますが、reflection からしか到達できないコードまで消してしまうことがあります。

  5. 5

    Graphics APIs では Auto のチェックを外し、Vulkan を一番上、OpenGLES3 をその次に置きます。OpenGLES2 は丸ごと削除してください。

Assets/link.xml
<linker>
  <assembly fullname="Assembly-CSharp">
    <type fullname="SaveData" preserve="all" />
    <namespace fullname="Game.Data" preserve="all" />
  </assembly>
</linker>

APK か AAB か

✓ APK

ファイル一個で、スマホにコピーすればそのままインストールできます。開発中はずっとこちらを使います。

✓ AAB (App Bundle)

Google Play では必須です。Google がこのファイルから機種ごとの APK を生成するので、ダウンロードは小さくなります。

フレームレート — Unity は自動で設定してくれない

MobileBoot.cs — attach to an object in your first scene
using UnityEngine;

public class MobileBoot : MonoBehaviour
{
    void Awake()
    {
        // mobile defaults to 30 fps unless you say otherwise
        Application.targetFrameRate = 60;

        // VSync must be off for targetFrameRate to be respected
        QualitySettings.vSyncCount = 0;

        // stop the screen dimming during gameplay
        Screen.sleepTimeout = SleepTimeout.NeverSleep;

        DontDestroyOnLoad(gameObject);
    }
}