Unity5で作ったプログラムをiPhone実機で動かす備忘録
はじめに
ただいま『Unity5の教科書』という本を読んでUnityの使い方を勉強しています。
実機でプログラムを動かす部分を試しているのですが、エラーが出てきて何点か設定が必要なところがありました。
また出くわすエラーだと思うので、Unity5で作ったプログラムを自分のiPhoneで動かすためにやったことの備忘録をまとめます。
(本記事は、2017年2月時点で試したときの内容を書いています。)
自分の環境
- Unity 5.5
- Xcode 8.2.1
- iPhone 6S
iPhone実機で動かすまでのフロー
何も問題ない場合は以下手順で動かせるようです。Unity5とXcodeはインストール済みの前提です。
手順詳細
私の場合そのままではうまくいかず、細かいエラーがいくつか出たので手順を詳しく書いてきます。
iOSプロジェクトの書き出し
まずはUnityから.xcodeprojファイルを書き出します。
UnityのツールバーからFile > Build Settingsを選択して、以下図の画面を出します。そしてBuildボタンを押して、ファイル名を入力してxcodeprojファイルを保存します。
生成された.xcodeprojファイルをダブルクリックするとXcodeが開きました。
XcodeでRunボタンを押す
自分のiPhone6SをMacにUSB接続した状態で、Runボタン右側のところを「Generic iOS Device」から「自分のiPhone名」に変更しました。
その後すぐ再生ボタンのような形のRunボタンを押してみました。
これで動くと思っていたのですが、早速以下のエラーが出てしまいまいた。
「自分のiPhone名」 is busy: Processing symbol files
このエラーは、上に書かれたProcessing symbol filesのところのバーが100%になったあとで再実行したら無くなりました。
Apple ID認証
Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor.
Runボタンを押すと、次は上記エラーで動きません。エラーを調べたところ、今勉強している本の著者様サイトが出てきました。
(参考サイト:UnityでiOSビルドするとエラーが出る - おもちゃラボ)
Teamというのを設定する必要があるらしく、Apple IDをXcodeで認証する必要があるようです。
この設定のためには、左側のファイル一覧のところでプロジェクト名を選択して、Generalというタブを開くようです。自分は途中で少しいじったせいかプロジェクト名を選択してもGeneralが出てなくて困りましたが、ターゲットを変更したらGeneralが表示されました。以下はターゲットを変更しているところの図です。
次にSigningからAdd Accountボタンを押してApple IDを認証します。
以下の画像ではすでに認証が終わった状態のものですが、最初に開いたときは矢印付近にAdd Accountボタンが出てました。
Add Accountボタンを押して自分の既に持っているApple IDでログインをするとエラーが解消しました。
ProductName変更
No profiles for 'com.Company.ProductName' were found: Xcode couldn't find a provisioning profile matching 'com.Company.ProductName'.
次はこのエラーが出ました。GeneralのBundle Identifier欄にあるcom.Company.ProductNameをユニークな名前に変更したら直りました。
デベロッパAPPの信頼
Cloud not launch "ProductName"
次はこのエラーです。iPhone側で認証する必要があるようでした。
iPhone側で、
設定 > 一般 > プロファイルとデバイス管理 から、デベロッパAPPを選んで信頼を選びました。
デバイスの向き
これで動きましたが画面の向きを横向きにしたかったので、Signingの下にあるDevelopment InfoからDevice OrientationをLandscape Leftだけチェック入れた状態にしました。
2017.10.24追記
上記の設定だけだと端末スリープから復帰するとなぜか画面が縦向きになってしまいました。
File > Build Settings > Player SettingsのResolutions and PresentationでDefault OrientationをLandscape Leftにして、
ゲーム開始時に動かすソースコードに以下を記述したところ、スリープ復帰後も正しく横方向を維持できました。
Screen.orientation = ScreenOrientation.LandscapeLeft;
アプリが動いた!
これまでの設定をしたあとでRunボタンを押してしばらく待っていると、iPhoneでアプリが動きした!
Apple ID認証のところ以外は簡単なエラーばかりでしたが、細かいエラーがたくさん出ていたので、なんとか解消して動くようになって嬉しいです。
また起きそうなので落ち着いて対応できるように備忘録として対処法を残しておきます。