Unity3D開発のスタートラインへ至る遠き道のり

created at 2019-10-15 17:00+0900

  • スマホ・タブレット用ゲームアプリを作成したい。

  • Unityを使えば、一つのソースからいろんなプラットフォーム用アプリをビルドできるらしい。(さしあたり欲しいのはAndroidとiOSとWebGLくらい)

  • せっかくなのでGoogle AdMobも付けたい。

  • Unity3D開発と言ってもエンタープライズじゃないよ。個人レベルだよ。

Unity3D開発に必要なもの

世の中には「AssetStoreのアセットを組み合わせただけで作れた」とか「1週間で作った」とかキャッチーなことをおっしゃる天才さまもいらっしゃるけれど、 おいら凡人だからUnityだけじゃ作れない。

3Dモデリングソフト

  • Blender 2.80

    • https://www.blender.org/

    • 3Dゲームを作る場合3D部品が必要になるので、それを作るために使う。

    • 2.80系とそれ以前のバージョンではUIやら操作方法がかなり違う。

    • Unityへインポートできる形式で出力できるならBlenderでなくてもよい。

ペイントソフト

  • Gimp

    • https://www.gimp.org/

    • 3Dモデルのテクスチャを作るのに使う。

    • ゲーム上のUI部品、GooglePlayStoreやAppStoreで公開するときのアイコン等を作成するのに使う。

    • png形式で出力できればGimpでなくてもよい。

アプリ本体の作成

  • Unity 2019.2.9f1

  • VisualStudio

    • C#スクリプトもりもり書くことになる。

広告入れたい

Androidアプリのビルド

  • Java

    • OpenJDK

  • Android SDKとNDK

    • GooglePlayStoreで公開するためには、32ビット版・64ビット版全部入りAndroidAppBundle (aab)形式でビルドしなければならない。

    • UnityHub経由でインストールしないと、うまく働かないようだ。

      • UnityのバージョンとAndroid SDKのバージョンには対応する組み合わせがあるらしく、すでにインストール済みのAndroid SDKとNDKのパスを設定しても'Android SDK not found'とか言い出す。

  • bundletool

    • https://github.com/google/bundletool

    • aabファイルからapksファイルを生成したり、apksファイルを実機へインストールしたりするために用いる。

    • HomeBrewでインストールしとく。

iOSアプリのビルド

  • XCode

  • CocoaPods

    • RubyGemが必要。

    • MacOSのバンドル版Rubyはバージョンが古いので、HomeBrewでなるべく最新版をインストールした方がよいかも。

    • GoogleAdMobを使わないなら要らない。

トラブルシューティング

Unity Hub経由でAndroid SDK入れたのに、ライセンスがどうこう言われる

  • ターミナルを開いてコマンドラインからライセンスに同意する。

# <Unityのインストールディレクトリ>/PlaybackEngines/AndroidPlayer/SDK/tools/bin
cd /Applications/Unity/Hub/Editor/2019.2.9f1/PlaybackEngines/AndroidPlayer/SDK/tools/bin
./sdkmanager --licenses

Unityに追加したGoogleMobileAdsパッケージからCocoaPodsをインストールしたのにpodコマンドがないとか言われる

  • 「アセット」メニュー→"Play Service Resolver"→"iOS Resolver"→"Settings"

    • "Use Shell to Execute CocoaPods tool" のチェックボックスをonにする。

  • 環境変数PATHにRubyやらgemやらのパスを設定する。(gemのディレクトリはrubyバージョンに依る)

# .profile
export PATH="/usr/local/opt/ruby/bin:$PATH"
export PATH="$HOME/.gem/ruby/2.6.0/bin:$PATH"
  • 再度"Install Cocoapods"を実行する。

    • 「アセット」メニュー→"Play Service Resolver"→"iOS Resolver"→"Install Cocoapods"

    • インストールに成功しpodコマンドが見えるようになっていると"detect cocoapod path...."とか言われる(うろ覚え)。

CocoaPodsをインストールした後iOS用ビルドに時間がかかる

  • CocoaPodsのレポジトリ初期化に時間がかかっているらしい。

  • コマンドラインから以下を実行し、1時間くらい待つ

pod repo update

Android App Bundle (aab) をアップロードしろとGooglePlayStoreに言われた

  • 「ビルド設定...」→「Android」→「App Bundle をビルド」のチェックをOnにする。

Android App Bundle (aab) には32ビット版と64ビット版の両方を含めろとGooglePlayStoreに言われた

  • Android SDK, NDKがインストール済みであること

  • 公開設定でキーストア、エイリアス、パスワードが設定済みであること

  • 「ビルド設定...」→「プレイヤー設定」→「Androidタブ」→「その他の設定」→「設定」

    • スクリプティングバッグエンド

      • IL2CPP を選択

    • ターゲットアーキテクチャ

      • ARMv7 → Onにする

      • ARM64 → Onにする

Android App Bundle (aab) で実機テストどうするん?

  • HomeBrew で bundletoolをインストールし、次のようにコマンド実行する。

    • --overwrite で同名apksファイルを上書き

    • --bundle=<元になるaabファイル名>

    • --output=<出力するapksファイル名>

    • --ks=<キーストアへのファイルパス>

    • --ks-pass=file:<キーストアのパスワードを記述したファイル(自分でテキトーに作る)へのパス>

    • --ks-key-alias=<キーのエイリアス>

    • --key-pass=file:<指定したエイリアスのパスワードを記述したファイル(自分でテキトーに作る)へのパス>

# Android app bundle から apks を生成する。
bundletool build-apks \
  --overwrite \
  --bundle=AppName.aab \
  --output=AppName.apks \
  --ks=$HOME/Path/To/Unity_Keystore/user.keystore \
  --ks-pass=file:$HOME/Path/To/Unity_Keystore/secret.keystore.txt \
  --ks-key-alias=AliasOfApp \
  --key-pass=file:$HOME/Path/To/Unity_Keystore/secret.key.txt

# apks を実機へインストール
bundletool install-apks --apks=AppName.apks