超簡単なUnityアプリをiPhoneで動かす

【今日のお題】

空と地面だけのUnityなんにもない画面をiPhoneで表示します。

f:id:kuukaix:20210222190703j:plain

iPhoneでなにもないUnityの画面を出す

 【1.前提条件】

 Mac miniを使って、UnityアプリをiPhoneで動かすのですが、SSDの容量が足りず、Windowsを使って、Uniyコードからxcodeのソースを出力して、Mac minixcodeをビルドして、iPhoneで動かします。

 WindowsでUnityが動作すること(Unityで無料のアカウント登録が必要)。Mac minixcodeが動作して、iPhoneでアプリが動くこと(Appleで無料のアカウント登録が必要)が前提条件です。

 

【2.WindowsでUnityを動かす】

f:id:kuukaix:20210222190353j:plain

「新規作成」ボタンを押します。

 

f:id:kuukaix:20210222190357j:plain

プロジェクト名をHello01にして「作成」ボタンを押します。

 

f:id:kuukaix:20210222190402j:plain

これで空と地面のUnityアプリができます。

 

f:id:kuukaix:20210222190406j:plain

プレビューPlayボタン(赤い丸の場所の三角ボタン)を押せば、プレビューで実行されます。

 

f:id:kuukaix:20210222190411j:plain

プレビューで実行された画面。これをiPhoneに表示させるのが今回の目標です。

 

f:id:kuukaix:20210222190416j:plain

「ファイル」メニューから「Build And Run」を選びます。

 

f:id:kuukaix:20210222190420j:plain

Windowsで動くexeファイルを作成する場所がたずねられるので、そのまま「フォルダーの選択」ボタンを押します。

 

f:id:kuukaix:20210222190424j:plain

プレビューではなく、Windows環境で動きます。(ここで少し問題)Unityアプリに終了処理を入れていないので、普通に終われません。Windowsのアプリ強制終了(Altキー+F4キーの同時押し)でアプリを終了させます。

 

【3.WindowsでUnityアプリがエスケープキーで終わるように修正】

f:id:kuukaix:20210222190428j:plain

終われないアプリはひどいので、エスケープキーで終わる処理だけ追加します。左上Hierarchyの下の「+」をクリックします。

 

f:id:kuukaix:20210222190432j:plain

出てきたメニューから「Create Empty」を選択します。

 

f:id:kuukaix:20210222190436j:plain

追加されたオブジェクトの名前を「Game」に変更します。

 

f:id:kuukaix:20210222190440j:plain

画面右のInspectorにある「Add Component」ボタンを押します。

f:id:kuukaix:20210222190444j:plain

Componentの種類を選ぶウィンドウが出ます。

 

f:id:kuukaix:20210222190448j:plain

一番下のNew scriptを選びます。

 

f:id:kuukaix:20210222190452j:plain

名前をGameContollerにして、「Create and Add」ボタンを押します。

 

f:id:kuukaix:20210222190456j:plain

C#のプログラム(の骨組み)が追加されます。Assetsの中のC#のプログラムのアイコンをダブルクリックしてエディタ(C#が編集できそうなアプリ)を起動します。

f:id:kuukaix:20210222190500j:plain

(私の場合 Visual Studioをインストールしてあるので)Visual Studioが起動して、C#の骨組みコードが編集できる状態になります。

 

f:id:kuukaix:20210222190503j:plain

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameController : MonoBehaviour
{
    void Quit()
    {
#if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
#elif UNITY_STANDALONE
        UnityEngine.Application.Quit();
#endif
    }
    void Update()
    {
        if (Input.GetKey(KeyCode.Escape)) Quit();
    }
}


こんな風に編集します。Update()で押されたキー(この場合Escape)を検出して、Quit()を呼び出します。Quit()はアプリを終了するコードです。#if UNITY_EDITORの下にあるUnityEditor.EditorApplication.isPlaying = false;は、プレビューしているときに終了するコードで、#elif UNITY_STANDALONEの下にあるUnityEngine.Application.Quit();は、直接実行したときに終了するコードになっています。編集が終わったらファイルを保存して、エディタを終わります。(ここではコンパイルしません)Unityに戻ってくると、勝手にビルドが走ります。エラーになった場合は編集したソースコードを再確認してください。

 

f:id:kuukaix:20210222190508j:plain

「ファイル」メニューからBuildSettings...を選びます。

 

f:id:kuukaix:20210222190512j:plain

PlatformがWindows用になっています。

 

f:id:kuukaix:20210222190516j:plain

iOSを選択して、「Player Settings..」ボタンを押します。iOS用の開発環境がインストールされていない場合は、開発環境を追加インストールするよう指示がでます。

 

f:id:kuukaix:20210222190519j:plain

Project Settingsの画面が開くので、PlayerのCompany Nameに自分っぽい名前にします。私の場合ブログのURLのhatenablog.kuukaixにしました。下の方のBundle Identifierはcom.hatenablog.kuukaix.Hello01に(勝手に)なります。この画面は右上の「x」ボタンで閉じます。

 

f:id:kuukaix:20210222190524j:plain

設定が終わったら「Switch Platform」ボタンを押します。

 

f:id:kuukaix:20210222190527j:plain

「Build」ボタンになりますが、シーンが追加されていないので、「Add Open Scenes」ボタンを押して、Scenes/SampleSceneを追加します。

 

f:id:kuukaix:20210222190532j:plain

Scenes/SampleSceneが追加されました。

 

f:id:kuukaix:20210222190537j:plain

「Build」ボタンを押します。

 

f:id:kuukaix:20210222190540j:plain

ソースコードを出力するので、新しいフォルダーを作成します。「新しいフォルダー」ボタンを押します。

 

f:id:kuukaix:20210222190544j:plain

iOSbuildというフォルダーを作ります。

 

f:id:kuukaix:20210222190549j:plain

「フォルダーの選択」ボタンを押します。

 

f:id:kuukaix:20210222190554j:plain

iOSbuildフォルダーの中にxcodeソースコード(いっぱい)が作成されるので、エクスプローラーでiOSbuildフォルダーを選んで、右クリックします。「送る」メニューから「圧縮(zip形式)フォルダー」を選んでzipアーカイブを作成して、Mac miniに転送します。(私の場合drop boxを使って転送しました)

 

【4.Windowsで作ったxcodeのソースをMac miniでビルドする】

f:id:kuukaix:20210222190559j:plain

Mac miniにiOSbuild.zipを持って行ったら、右クリックして、「このアプリケーションで開く」から「アーカイブユーティリティ(デフォルト)」を選択して、ファイルを展開します。

 

f:id:kuukaix:20210222190604j:plain

iOSbuildフォルダーの中身はxcodeソースコードです。Unity-iPhone.xcodeprojをダブルクリックして、xcodeアプリを起動します。

 

f:id:kuukaix:20210222190609j:plain

xcodeアプリが起動して、Unityのコードが表示されます。

 

f:id:kuukaix:20210222190613j:plain

Mac miniiPhone実機をUSBで接続して、xcodeアプリの(実行する)iOSバイスの変更で、接続しているiPhoneに切り替えます。

f:id:kuukaix:20210222190617j:plain

画面上の赤丸で囲んである三角ボタンを押して、ビルドします。

 

f:id:kuukaix:20210222190621j:plain

MapFileParser.shにPermissionがないというエラーが出ます。

 

f:id:kuukaix:20210222190625j:plain

アプリランチャーから「ターミナル」を選んで実行します。

 

f:id:kuukaix:20210222190629j:plain

bashが起動するので、MapFileParser.shのある場所まで、cd で移動します。私の場合、Documents/iOSbuildに置いていました。chmod +x MapFileParser.shで、実行権限(Execute Permission)を与えます。

 

f:id:kuukaix:20210222190633j:plain

三角ボタンを押して、ビルドすると、まだエラーです。Signingのエラー。認証エラーです。

 

f:id:kuukaix:20210222190637j:plain

左上のアプリのプロファイルをクリックして、Singing & Capabilityをクリックします。

 

f:id:kuukaix:20210222190641j:plain

Automatically manage singingにチェックを入れます。

 

f:id:kuukaix:20210222190645j:plain

Teamsをクリックすると、自分のAppleアカウントが選べ得るようになっているので、切り替えます。

 

f:id:kuukaix:20210222190649j:plain

自分のApple Developmentアカウントになっていることを確認したら、三角ボタンを押して、ビルド&実行します。iPhone側で、開発アプリを実行できるように設定変更指示がでます。

 

【5.iPhoneで実行する】

f:id:kuukaix:20210222211212j:plain

USBでつながっているiPhoneの「設定」アイコンをタップして、「一般」をタップします。「プロファイルとデバイス管理」をタップします。

 

f:id:kuukaix:20210222211217j:plain

Apple Development:」が表示されているので、タップして許可を与えます。

 

f:id:kuukaix:20210222190703j:plain

iPhone で動きました。