Posted at

Unity玉転がしをスマホにビルド


はじめに

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()の中身を書き換える。


PlayerController.cs

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)

{
// タッチで行いたい処理、ジャンプとか
}

これでスマホで操作できるはず。


設定

メニューからFile>Build Settingsを開く。


使うシーンを入れる

Scenes In Buildに使うシーンをAssetsからドラッグドロップ。

シーンが複数あるなら最初に来て欲しいシーンを一番上にする。

玉転がしならシーンはひとつのはず。


プラットフォームを切り替える

iOSAndroidを選択してSwitch Platform

現在選んでいるプラットフォームにはUnityアイコンがついている。


Player Settings

Player Settingsを開く。

Company NameProduct Nameを適当に変える。

変えないとビルドに失敗する。


◆Resolution and Presentation>Orientation>Default OrientationLandscape Rightにする。

スマホの向きを横向きで固定している。

他の向きにしたり傾き検知で回転もできる。


◆Other Settings>Identification>PackageNameを一応確認する。iOSはBundle Identifier

先ほど変えたCompany NameとProduct Nameの組み合わせになっていれば○

例:com.watasi.ball

 

これで設定ok。

ここからAndroidとiOSで分かれる。


Android

端末側の設定を変える。

◆ 設定>端末情報>ソフトウェア情報 からビルド番号を7回タップし開発者モードにする。

◆ 設定>開発者向けオプション からUSBデバッグをオンにする。

◆ 端末とPCをデータ通信が可能なケーブルでつなぐ。

これで端末側の準備はok。

ケーブルを繋いだらBuild SettingsBuild And Runをクリック。

適当に名前をつけSave

保存場所もそのままで良い。

これで自身のスマホにゲームをビルドできたはず。

できなかった人は解決策をまとめるので見てみて。


iOS

Macがないとダメよ?

Xcodeが必要になるのでApp Storeからインストールする。

とりあえずBuild SettingsBuild And Runをクリック。

適当に名前をつけSave

保存場所もそのままで良い。

ビルド後にXcodeが開くはず。

左の一番上(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 SettingsCompany NameProduct Nameを変え、Package Nameが変わっていることを確認したはず。

それでもダメならさらにPackage Nameを変えてみる。

◆保存したビルドのパスに日本語を入れない

C:aaa/bbb/ccc/ddd.apk

ビルドすると拡張子がapkで保存されると思いますが、そこまでのパスに日本語が入っているとダメだそうです。


iOSエラー

なんのエラーがあったかふわっと忘れました。

https://qiita.com/segur/items/bef54efa7764885173bb

この方の「ケース:プライバシー情報がロックされてしまった」の症状でした。


おわり

だんだんと雑になっていく記事になりました。

大変ですがスマホに入れられるとわくわくしますね。