Unity3D開発のスタートラインへ至る遠き道のり¶
created at 2019-10-15 17:00+0900
スマホ・タブレット用ゲームアプリを作成したい。
Unityを使えば、一つのソースからいろんなプラットフォーム用アプリをビルドできるらしい。(さしあたり欲しいのはAndroidとiOSとWebGLくらい)
せっかくなのでGoogle AdMobも付けたい。
Unity3D開発と言ってもエンタープライズじゃないよ。個人レベルだよ。
Unity3D開発に必要なもの¶
世の中には「AssetStoreのアセットを組み合わせただけで作れた」とか「1週間で作った」とかキャッチーなことをおっしゃる天才さまもいらっしゃるけれど、 おいら凡人だからUnityだけじゃ作れない。
3Dモデリングソフト¶
Blender 2.80
3Dゲームを作る場合3D部品が必要になるので、それを作るために使う。
2.80系とそれ以前のバージョンではUIやら操作方法がかなり違う。
Unityへインポートできる形式で出力できるならBlenderでなくてもよい。
ペイントソフト¶
Gimp
3Dモデルのテクスチャを作るのに使う。
ゲーム上のUI部品、GooglePlayStoreやAppStoreで公開するときのアイコン等を作成するのに使う。
png形式で出力できればGimpでなくてもよい。
アプリ本体の作成¶
Unity 2019.2.9f1
VisualStudio
C#スクリプトもりもり書くことになる。
広告入れたい¶
Google AdMob
GoogleMobileAds-v4.0.0.unitypackage
広告プロバイダは他にもいろいろあるらしい
Androidアプリのビルド¶
Java
OpenJDK
Android SDKとNDK
GooglePlayStoreで公開するためには、32ビット版・64ビット版全部入りAndroidAppBundle (aab)形式でビルドしなければならない。
UnityHub経由でインストールしないと、うまく働かないようだ。
UnityのバージョンとAndroid SDKのバージョンには対応する組み合わせがあるらしく、すでにインストール済みのAndroid SDKとNDKのパスを設定しても'Android SDK not found'とか言い出す。
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