スマートデバイスプログラミング 第5回
実機で試してみよう

課題について(予定)


(1)Android端末用の実行ファイル(apk)を作ってみましょう。
(2)端末を繋いでunityRemote試したり、(macの方は)xcodeでビルドして実機で動かしたりしてみましょう。
(3)更に余力がある人は、PlayerSettingの設定を変えて、色々試してみましょう。
SFSには何ができたたか(できなかった物があれば、どこまでできたか、どこで詰まったかなども)記載して、投稿してください。
今回UnityRemoteやapk作りに断念した人も、次回使えるよう頑張ってください。
(でないと最終課題が作れません)
サンプルをUnityRemote等を用いてスマートデバイス上で起動できた人は、
実機で出したハイスコアも書いておいてください。
画面長押しでリトライできる機能を追加すると、より快適にハイスコアに挑戦できます。

課題の準備

プログラムの編集を始める前に毎回する準備作業の手順を、別ページに移しました。
「課題の進め方」
※今回は第5回なので、フォルダはk05に改名してください。
サンプルの起動を確認し、スクリプトが編集できる状態になったら、
プログラムを少し追加して、第1回でも作った連打ゲームのマルチタッチ対応版を作りましょう。

//変数の宣言部分に↓を記載
int time = 600;
int score = 0;

//InitGameの{と}の間に↓を記載
gc.SetResolution(720, 1280);

//UpdateGameの{と}の間に↓を記載
time = time - 1;
for(int i=0 ; i< gc.PointerCount ; i++){
  if(gc.GetPointerFrameCount(i)==1){
    if(time >= 0){
      score = score + 1;
    } 
  }
}
if(gc.GetPointerDuration(0) >= 2.0f && time < -120){
  time =600;
  score =0;
}

//Drawの{と}の間に↓を記載
gc.ClearScreen();
gc.DrawImage(GcImage.BlueSky, 0, 0);
gc.SetColor(0, 0, 0);
gc.SetFontSize(36);
if(time >= 0 ){
  gc.DrawString("time:"+time,60,160);
}
else {
  gc.DrawString("finished!!",60,160);
}
gc.DrawString("score:"+score,60,200);
エラー無くunity上で遊べることが確認できたら、実機での起動を試しましょう。

Androd版実行ファイルの作成

Build And Setteing窓で「Android」をクリックして選択したあと、「Build」ボタンを押してみましょう。
ファイル名を聞かれるので、k05と入力してあげます。
途中でAndroid SDKのフォルダを聞かれます。
android_sdkを解凍して配置したフォルダを指定します。
再度ビルドが始まります。途中SDKをupdateするか聞かれるのでupdateします。
「Bundle Identifier(バンドル識別子)に問題がある」とエラーが出るので、設定してあげます。
Inspector窓のOther Settingsを選んで、Bundle Identifierの欄に
国.制作者.アプリ名を英小文字で指定。例:jp.wadari.clickgame
(Inspector窓に何も出ていない時は、build setting窓の左下の方にある「player setting」ボタンを押してください)

ビルドに成功するとapkが作成されたフォルダが開かれます。
Android端末をお持ちの方は、「Build and Run」ボタンを押すと
アプリをインストールできます。
web上にapkファイルを置いて端末にurlをメールし、端末のブラウザからアクセスする方法でもインストール可能です。(~が入ったURLを端末からうまく開けない場合は、~を%7Eに置き換えてみましょう)
(身元不明アプリをインストールできるよう、設定変更が必要です。この設定を変更すると後々ウイルス等の危険なアプリをインストールしてしまうリスクが上がりますので、ご注意ください。この授業が終わったら設定を元に戻しておくのが無難です。)

iOS端末を持っているMacユーザーは実機を繋いでxcodeでビルドしてみる。

こちらを読んで進めてみてください。
https://github.com/sfc-sdp/SDP-Textbook/blob/old/2015f/k05_develop_ios.md

Android端末を持っている人は実機を繋いでunityリモートを使ってみる

Android端末にUnityRemote5をインストールしましょう。
以下のURLをAndroid端末で開くと、インストールできます。
(URLをコピペしてメールで送ると良いかと思います
https://play.google.com/store/apps/details?id=com.unity3d.genericremote&hl=ja
(windowsの人のみ)使っている端末のADB用USBドライバーをPCにインストールします。
(端末メーカーのサイトからDL、インストールできることが多いです、型番+USBドライバーで検索してみましょう)
(端末向けのユーティリティーツール等をインストールした覚えがあれば、既にドライバがインストールされているかもしれません)
端末の設定を変更して、USBデバッグできる状態にしましょう。
android端末にて、設定→アプリケーション→開発(一番下の方にあります)を選んで、USBデバッグのチェックをONにします。
USBケーブルで、端末とPCを繋ぎましょう。
(Macの人のみ)PC上でダイアログが出てUSBデバッグを許可するか聞かれるので、OKを選択してください。
Android端末上で、UnityRemote5を起動させましょう。
Unity画面でEdit→ProjectSetting→Editorを選んで、一番上の欄、UnityRemotoのDeviceの項目がNoneになっているのでAny Android Deviceに変更しします。
アプリをテスト実行すると、PC上だけでなく端末上でも実行されるようになります。
うまくいかない場合は、Unityを再起動したり、Android端末を再接続したり、unityRemote5を再起動したりなど、試してみてください。

iOS端末を持っている人は実機を繋いでunityリモートを使ってみる

以下のURLをiOS端末(iPhone,iPad)で開くと、インストールできます。
(URLをコピペしてメールで送ると良いかと思います
https://itunes.apple.com/jp/app/unity-remote-4/id871767552?mt=8
(AppStoreでUnity Remote 5を検索する方が楽かもしれません)
windowsPCを使っている人はPCにitunesをインストールしてください(実行に必要なドライバーを入手する為です)
USBケーブルで、端末とPCを繋ぎましょう。
iOS端末上で、UnityRemote5を起動させましょう。
Unity画面でEdit→ProjectSetting→Editorを選んで、一番上の欄、UnityRemotoのDeviceの項目がNoneになっているのでAny iOS Deviceに変更しします。
アプリをテスト実行すると、PC上だけでなく端末上でも実行されるようになります。
うまくいかない場合は、Unityを再起動したり、iOS端末を再接続したり、unityRemote5を再起動したりなど、試してみてください。

TIPS:UnityRemoteで強制的に縦画面になる

gameCanvas画面の縦横比に合わせて自動的に回転してくれる機能が入っており、apkなど実行ファイルを作って実行した場合は、設定などいじらなくてもよしなに回転してくれます。 UnityRemoteではその機能が働かないので、BuildSettingのPlayerSetteing画面にて、横画面にチェックするとゲームが横向きになります。
また、GameViewの左上にあるaspectの項目をfreeAspectやremoteに変えることでも微妙に画面サイズが合わない不具合は解決されますので、試してみてください。

TIPS:実機でキャラクターが表示されない

一部環境にて、iOSの実起用ビルドでDrawClippedImageがうまく機能しない
(画像が一切表示されない)不具合が確認されています。
原因等調査中なので、今週は代わりにボールを表示するか
DrawRectに置き換えてください。

TIPS:android.batが実行できない

先に環境変数を変更してjavaのパスを通してから、再度実行してみてださい。

[WindowsとAndroidの人のみ] 開発用USBドライバのインストール


1. Android端末をデバッグモードにする。設定→開発者向けオプション→USBデバッグにチェックを入れる。

そんな項目は無い:
AndroidのOSが古いと思われます。個別に対応しますので挙手して下さい

2. PCにAndroid端末をUSB接続します

ケーブルが無い:
まわりの人に貸してもらうか、SAが用意したのを貸します

刺したら勝手にドライバのインストールが始まった:
「ドライバのインストールが出来ませんでした」となるまで待って、画面を閉じてください

3. コンピューター→システムのプロパティ→デバイスマネージャを押します

そんなのない:
よく探してください。またはコントロールパネル→ハードウェアとサウンド→デバイスマネージャでも起動できます

4. ほかのデバイスにぶら下がっている!マークのアイコンがついてる「Android ADB Interface」を探してください

そんなのない:
「SAMUSUNG DEBUG」とか「不明なデバイス」とか違う名前になっているかも知れません

そんなのもない:
正常にUSB接続が出来ていないかもしれません。繋ぎなおしてみて、それでもダメならSAを呼んでください

5. 先ほど見つけた項目を右クリック→ドライバーソフトウェアの更新を押します

6. コンピューターを参照して~の方をクリックします

7. 参照ボタンを押して、AndroidSDKに含まれるusb_driverフォルダを選択して下さい。人によってパスは異なりますが、大抵「C:\android-sdk\extras\google\usb_driver」あたりだと思います

usb_driverの場所が見つからない:
周りの人に聞いてください。誰もわからなければSAを呼んでください

8. 次へを押すと、ドライバーがインストールされるはずです

インストールに失敗した:
選択したデバイスが間違っているか、接続したAndroidとの相性問題です。SAを呼んでください

9. コマンドプロンプトを再度開き、「adb devices」と入力してください。接続した端末のIDらしきものが表示されれば成功です

「List of devices attached」と表示された:
端末が認識されていません。PCを一旦再起動して、再度「adb devices」コマンドを試してみてください

再起動しても変わらない:
SAを呼んでください