【今日のお題】
空と地面だけのUnityなんにもない画面をiPhoneで表示します。
【1.前提条件】
Mac miniを使って、UnityアプリをiPhoneで動かすのですが、SSDの容量が足りず、Windowsを使って、Uniyコードからxcodeのソースを出力して、Mac miniでxcodeをビルドして、iPhoneで動かします。
WindowsでUnityが動作すること(Unityで無料のアカウント登録が必要)。Mac miniでxcodeが動作して、iPhoneでアプリが動くこと(Appleで無料のアカウント登録が必要)が前提条件です。
【2.WindowsでUnityを動かす】
「新規作成」ボタンを押します。
プロジェクト名をHello01にして「作成」ボタンを押します。
これで空と地面のUnityアプリができます。
プレビューPlayボタン(赤い丸の場所の三角ボタン)を押せば、プレビューで実行されます。
プレビューで実行された画面。これをiPhoneに表示させるのが今回の目標です。
「ファイル」メニューから「Build And Run」を選びます。
Windowsで動くexeファイルを作成する場所がたずねられるので、そのまま「フォルダーの選択」ボタンを押します。
プレビューではなく、Windows環境で動きます。(ここで少し問題)Unityアプリに終了処理を入れていないので、普通に終われません。Windowsのアプリ強制終了(Altキー+F4キーの同時押し)でアプリを終了させます。
【3.WindowsでUnityアプリがエスケープキーで終わるように修正】
終われないアプリはひどいので、エスケープキーで終わる処理だけ追加します。左上Hierarchyの下の「+」をクリックします。
出てきたメニューから「Create Empty」を選択します。
追加されたオブジェクトの名前を「Game」に変更します。
画面右のInspectorにある「Add Component」ボタンを押します。
Componentの種類を選ぶウィンドウが出ます。
一番下のNew scriptを選びます。
名前をGameContollerにして、「Create and Add」ボタンを押します。
C#のプログラム(の骨組み)が追加されます。Assetsの中のC#のプログラムのアイコンをダブルクリックしてエディタ(C#が編集できそうなアプリ)を起動します。
(私の場合 Visual Studioをインストールしてあるので)Visual Studioが起動して、C#の骨組みコードが編集できる状態になります。
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に戻ってくると、勝手にビルドが走ります。エラーになった場合は編集したソースコードを再確認してください。
「ファイル」メニューからBuildSettings...を選びます。
PlatformがWindows用になっています。
iOSを選択して、「Player Settings..」ボタンを押します。iOS用の開発環境がインストールされていない場合は、開発環境を追加インストールするよう指示がでます。
Project Settingsの画面が開くので、PlayerのCompany Nameに自分っぽい名前にします。私の場合ブログのURLのhatenablog.kuukaixにしました。下の方のBundle Identifierはcom.hatenablog.kuukaix.Hello01に(勝手に)なります。この画面は右上の「x」ボタンで閉じます。
設定が終わったら「Switch Platform」ボタンを押します。
「Build」ボタンになりますが、シーンが追加されていないので、「Add Open Scenes」ボタンを押して、Scenes/SampleSceneを追加します。
Scenes/SampleSceneが追加されました。
「Build」ボタンを押します。
ソースコードを出力するので、新しいフォルダーを作成します。「新しいフォルダー」ボタンを押します。
iOSbuildというフォルダーを作ります。
「フォルダーの選択」ボタンを押します。
iOSbuildフォルダーの中にxcodeのソースコード(いっぱい)が作成されるので、エクスプローラーでiOSbuildフォルダーを選んで、右クリックします。「送る」メニューから「圧縮(zip形式)フォルダー」を選んでzipアーカイブを作成して、Mac miniに転送します。(私の場合drop boxを使って転送しました)
【4.Windowsで作ったxcodeのソースをMac miniでビルドする】
Mac miniにiOSbuild.zipを持って行ったら、右クリックして、「このアプリケーションで開く」から「アーカイブユーティリティ(デフォルト)」を選択して、ファイルを展開します。
iOSbuildフォルダーの中身はxcodeのソースコードです。Unity-iPhone.xcodeprojをダブルクリックして、xcodeアプリを起動します。
xcodeアプリが起動して、Unityのコードが表示されます。
Mac miniにiPhone実機をUSBで接続して、xcodeアプリの(実行する)iOSデバイスの変更で、接続しているiPhoneに切り替えます。
画面上の赤丸で囲んである三角ボタンを押して、ビルドします。
MapFileParser.shにPermissionがないというエラーが出ます。
アプリランチャーから「ターミナル」を選んで実行します。
bashが起動するので、MapFileParser.shのある場所まで、cd で移動します。私の場合、Documents/iOSbuildに置いていました。chmod +x MapFileParser.shで、実行権限(Execute Permission)を与えます。
三角ボタンを押して、ビルドすると、まだエラーです。Signingのエラー。認証エラーです。
左上のアプリのプロファイルをクリックして、Singing & Capabilityをクリックします。
Automatically manage singingにチェックを入れます。
Teamsをクリックすると、自分のAppleアカウントが選べ得るようになっているので、切り替えます。
自分のApple Developmentアカウントになっていることを確認したら、三角ボタンを押して、ビルド&実行します。iPhone側で、開発アプリを実行できるように設定変更指示がでます。
【5.iPhoneで実行する】
USBでつながっているiPhoneの「設定」アイコンをタップして、「一般」をタップします。「プロファイルとデバイス管理」をタップします。
「Apple Development:」が表示されているので、タップして許可を与えます。
iPhone で動きました。