はじめに
Unityの玉転がしをスマホに入れる。
Unity Hubを使ってUnityを入れているとAndroidのビルドがすごく簡単。
Unity Hubをダウンロード:https://unity3d.com/jp/get-unity/download
iOSのビルドもしますが基本的にMacが必要
なので注意。
また、私はAndroidなのでiOSの説明は雑になります注意。
スマホ操作用にスクリプトの書き換えもします。
完成したUnityチュートリアルの玉転がしを書き換える。
玉転がし:https://unity3d.com/jp/learn/tutorials/s/roll-ball-tutorial
Unityバージョンは2019.2.1f1
Unity Hubは 2.1.0
準備
Unity Hubを開いてインストール>3つの点>モジュールを加える。
Androidなら
Android Build Support
Android SDK & NDK Tools
OpenJDK
の3つを選択して実行。
iOSならiOS Build Support
を選択して実行。
何か聞かれるかもしれないけど同意してインストール。
インストールが終わったら準備ok。
プロジェクトを開く。
スクリプト書き換え
キーボードで操作していた部分をスマホでも操作できるようにする。
だいたいUpdate()の中身を書き換える。
public class PlayerController : MonoBehaviour
{
//重力加速度
const float GRAVITY = 9.81f; // 追加
public float speed;
public Text scoreText;
public Text winText;
private Rigidbody rb;
private int score;
private void Start()
{
rb = GetComponent<Rigidbody>();
score = 0;
SetCountText();
winText.text = "";
}
void Update()
{
Vector3 vec = new Vector3(); // 追加
//エディターか実機か判定する
if (Application.isEditor)
{
// こちらが元々の操作
// ここに元々Update()に入っていたコードを移す
var moveHorizontal = Input.GetAxis("Horizontal");
var moveVertical = Input.GetAxis("Vertical");
var movement = new Vector3(moveHorizontal, 0, moveVertical);
rb.AddForce(movement * speed);
}
else
{
// こちらがスマホでの操作
vec.x = Input.acceleration.x;
vec.z = Input.acceleration.y;
vec.y = Input.acceleration.z;
//シーンの重力を入力ベクトルの方向に合わせて変化させる
Physics.gravity = GRAVITY * vec.normalized * speed/10;
}
}
キーボードでの操作から端末の傾きでの操作に変える。
タッチでの操作。
if (Input.GetTouch(0).phase == TouchPhase.Ended)
{
// タッチで行いたい処理、ジャンプとか
}
これでスマホで操作できるはず。
設定
使うシーンを入れる
Scenes In Build
に使うシーンをAssetsからドラッグドロップ。
シーンが複数あるなら最初に来て欲しいシーンを一番上にする。
玉転がしならシーンはひとつのはず。
プラットフォームを切り替える
iOS
かAndroid
を選択してSwitch Platform
。
現在選んでいるプラットフォームにはUnityアイコンがついている。
Player Settings
◆Company Name
とProduct Name
を適当に変える。
これで設定ok。
ここからAndroidとiOSで分かれる。
Android
端末側の設定を変える。
◆ 設定>端末情報>ソフトウェア情報 からビルド番号を7回タップし開発者モードにする。
◆ 設定>開発者向けオプション からUSBデバッグをオンにする。
◆ 端末とPCをデータ通信が可能なケーブルでつなぐ。
これで端末側の準備はok。
ケーブルを繋いだらBuild Settings
のBuild And Run
をクリック。
適当に名前をつけSave
。
保存場所もそのままで良い。
これで自身のスマホにゲームをビルドできたはず。
できなかった人は解決策をまとめるので見てみて。
iOS
Macがないとダメよ?
Xcodeが必要になるのでApp Storeからインストールする。
とりあえずBuild Settings
のBuild And Run
をクリック。
適当に名前をつけSave
。
保存場所もそのままで良い。
左の一番上(Unity-iPhone)をクリック。
タブのGeneral
を選択。
Teamを選んでAdd An Account
、自身のApple IDでログイン、戻る。
またTeamを選んで先ほど追加したアカウントを選択。
端末とPCをケーブルで繋ぎ、上側の~~ Generic iOS Device
から自身の端末を選ぶ。
再生マークのボタンを押す。
端末側でMacと制作者を信用する。
ビルド成功でok。
エラーが起きたら
体験したビルドの失敗と解決策を書いておく。
Androidエラー
No Android devices connected
◆端末をPCと繋がずにビルドした
繋ぐ。
◆ケーブルがデータ通信に対応していない
ケーブルがデータ通信に対応している場合、PCと繋いだ時端末側のステータスバーに「通常充電」の他に、「USBをファイル転送に使用」という項目が出てくるはず。
◆端末側でUSBデバッグがオンになっていない
上のAndroidを見てもう一度。
◆逆に繋いでいないのにこのエラーが出ない
プラットフォームがAndroidに切り替わってないかも。
CommandInvokationFailure: Unable to install APK to device. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.
実際に体験していないエラーなので解決策だけをつらつらと。
◆タスクマネージャーでadb.exeのプロセスを終了する
よく分からないけどこれでビルドが通るようになるらしい。
◆Package Nameを変える
[Player Settings](Player Settings)でCompany Name
とProduct Name
を変え、Package Name
が変わっていることを確認したはず。
それでもダメならさらにPackage Name
を変えてみる。
◆保存したビルドのパスに日本語を入れない
C:aaa/bbb/ccc/ddd.apk
ビルドすると拡張子がapkで保存されると思いますが、そこまでのパスに日本語が入っているとダメだそうです。
iOSエラー
なんのエラーがあったかふわっと忘れました。
https://qiita.com/segur/items/bef54efa7764885173bb
この方の「ケース:プライバシー情報がロックされてしまった」の症状でした。
おわり
だんだんと雑になっていく記事になりました。
大変ですがスマホに入れられるとわくわくしますね。