MacのVisual Studio CodeとUnityを連携させる方法(4)

Mac上のUnityでVisual Studio Codeを使う方法について、これまで何度か紹介してきました。

magicbullet.hatenablog.jp

magicbullet.hatenablog.jp

magicbullet.hatenablog.jp

これまでの方法では、Unityでプロジェクトを作るたびにPluginsフォルダを生成し、VSCode.csを入れる必要がありました。

しかし、Unity5.5から、Visual Studio Codeとの連携が標準になったようです。

blogs.unity3d.com

f:id:Takyu:20170225233705p:plain

そこで、試してみたところ、連携まではすぐにできました。しかし、コード補完が効いてくれなかったので、少し手間取りました。

そこで、対処方法を含めて、コード補完をさせるまでの手順を整理しました。


(補足)
今回、設定が必要だったのは、私が最近Macを買い換えたことで色々なツールが入っていない状態だったためです。
ある程度ツールが入っている方であれば、今回の対処方法が不要な場合もあると思います。

試した環境

Mac 10.12.3
・Unity5.5.1 f1
Visual Studio Code 1.9

手順

Unity PreferenceのExternal Toolsを選択し、Visual Studio Code.appを指定します。

f:id:Takyu:20170225234412p:plain

原則、手順はこれだけです。

適当なUnityプロジェクト、C#スクリプトを作り、何か入力してみます。

すると、下記のInut.GetKeyDownのように、Unity特有のAPIが候補として表示されます。

f:id:Takyu:20170226002912j:plain


もし環境が整っていない場合、このようにUnity特有のAPIが候補に出てきません。

f:id:Takyu:20170226003045p:plain
(例えば、Inputが出てこない)


このような場合、以下のエラー対応方法を参照ください。

エラー対応方法

(1)C#のコードに色がつかない

こうなっている場合です。

f:id:Takyu:20170226095511p:plain

C#のextentionが入っていないためです。

Visual Studio Codeを開き、cmd + pを同時に押してから、

ext install sharp

と入力し、C#アイコンをクリックし、C#の機能をインストールします。

f:id:Takyu:20170226002706p:plain

これでC#の記述に色がつきます。

f:id:Takyu:20170226095539p:plain

(2)The .NET CLI Tools cannot be located が出る

f:id:Takyu:20170225234851p:plain

以下のページの手順に沿って、.NET Core SDKをインストールします。

準備

Xcodeがインストールされていない場合、下記よりMac App Storeを開いてインストールします。
(次のbrewコマンド使用に必要のため)

Xcode

Xcode

  • Apple
  • 開発ツール
  • 無料


次に、ターミナルを開き、brewと入力します。

brew : command not found 

と出たら、下記をターミナルにコピペすることで、brewをインストールできます。
(brewのバージョンが表示された場合は、下記のインストール作業は不要です)

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Xcodeを一度も開いていない場合、インストールに失敗し、Xcodeのライセンスに同意するように通知されます。

f:id:Takyu:20170226000130j:plain

この場合、

sudo xcodebuild -license

を実行し、指示に従って進めます。

f:id:Takyu:20170226000559j:plain

f:id:Takyu:20170226000816j:plain

これでbrewがインストールできました。


brewがインストールできていたら、次は下記を入力して、opensslをインストールします。

$ brew update
$ brew install openssl
$ mkdir -p /usr/local/lib
$ ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
$ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/


ここまでの手順により、.NET CLI Toolsをインストールする準備ができました。

このHPから、Download .NET Core SDKを取得し、インストールします。

.NET - Powerful Open Source Development

f:id:Takyu:20170226001222j:plain

f:id:Takyu:20170226001547j:plain

f:id:Takyu:20170226001630j:plain


これで、冒頭のエラーは消えます。

(3) The reference assemblies for framework ".NETFramework,Version=v3.5" were not found.が出る


Unity上のC#スクリプトVisual Studio Codeで開いたが、何かエラーが出ている気がする、、という時は、出力ウインドウを見ると手がかりが得られることがあります。

出力ウインドウは、表示 -> 出力と指定することで、下部に表示されます。

f:id:Takyu:20170226002107j:plain


私の場合、ここに100行くらいのinfo、warning、failログが表示されていました。

その中に、


[fail]: OmniSharp.MSBuild.ProjectFile.ProjectFileInfo
The reference assemblies for framework ".NETFramework,Version=v3.5" were not found.

というログがありました。

これはmonoが入っていないことが原因のため、ターミナルで

$ brew install mono

を入力して、monoをインストールします。


これは下記の記事を見ることで解決できました。ありがとうございます。
偶然ですが、ほぼ同じ環境でした。

kb.imakewebsites.ca


終わりに

UnityとVisual Studio Codeの連携方法は今まで何度か変わってきました。
今後も変わる可能性がありますが、Unityで標準対応になったことから、大きな変化はないと思われます。

あとは、デバッグ機能が動くことを確認してみたいと思います。

Holographic Academyの解説「Hologram 230- Spatial Mapping」

前回に引き続き、Holographic Academyについてです。

今回は順番を飛ばしますが、Hologram 230 のSpatial Mappingについて整理しました。

これまでの内容は下記にあります。


magicbullet.hatenablog.jp

magicbullet.hatenablog.jp

magicbullet.hatenablog.jp

続きを読む

UnityでAndroid向けのビルドをした時に、 Failed to re-package resourcesで失敗した時の対処方法

先日、購入したUnityのアセットのサンプルシーンをAndroid向けにビルドした時に、下記のようなエラーが出てビルドに失敗しました。

f:id:Takyu:20170215230948p:plain

Build Failure

Failed to re-package resources. See the Console for details.

同時に、数十行のエラーログが出ました。

ログの先頭には、

CommandInvokationFailure: Failed to re-package resources.

というメッセージがあります。これで検索すると、同じような方がいらっしゃいました。
ただし、エラーの対処方法は様々のようです。


http://warapuri.com/post/147141380483/unityでandroid実機に転送しようとしたらエラーが出てビルドできない時の対処法
warapuri.com

  • > Android SDK Build-toolsの最新版を入れないことで解決


qiita.com


clrmemory.com

  • > AdMob(Androidアプリに広告を組み込む機能)のパッケージをインストールし直すことで解決


今回、私の場合はどれでもなく、UnityAssetに最初から入っていたAndroidManifest.xmlの記述を変更することで対応できました。

原因

(1) Assetに最初から入っていたAndroidManifest.xmlの記述がPlayer Settingsとコンフリクトした
(2) Assetに最初から入っていたAndroidManifest.xmlの記述で、no resource foundを引き起こしていた

対処方法 (1) Player Settingsとのコンフリクトを修正

Assetに入っていたAndroid Manifestファイルを修正します。

こちらなどでも紹介しましたが、UnityでAndroidアプリをビルドするために、UnityのフォルダにはAndroidManifest.xmlが入っています。
magicbullet.hatenablog.jp


Macの場合
/アプリケーション/Unity/PlaybackEngine/AndroidPlayer/Apk/AndroidManifest.xml

Windowsの場合
C:\Program Files\Unity\Editor\Data/PlaybackEngines/AndroidPlayer/Apk/AndroidManifest.xml


通常は、ここの記述とBuild Settingsで書いた情報でAndroid用のapkを作成しますが、プロジェクトの中で明示的にmanifestを変更することもできます。

今回使ったアセットでは、最初からPlugins/Androidの中にAndroidManifest.xmlが入っており、target SDK version(ビルド対象のAndroid OS バージョン)が一致していませんでした。

■Build Settings / Player Settings

f:id:Takyu:20170216093857j:plain


■Assets/Plugins/Android/AndroidManifest.xml

f:id:Takyu:20170216093934j:plain

対処方法 (2) 不要なmeta-dataをコメントアウト

これはこのアセット特有の問題ですが、Assets/Plugins/Android/AndroidManifest.xmlの中に、



という記述がありました。また、エラーログに

stderr[
AndroidManifest.xml:13: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

]

という記述がありました。Google Play Servicesは今回のアセットでは不要なのでコメントアウトしたところ、Unityでビルドが通るようになりました。

判断が難しいところですが、購入したアセットでも明らかに不要なものが書かれてビルドが通らない場合、修正するのもありと思います。


ちなみに、今回試していたのはこのアセットです。Androidで合成音声を出すことができます。

Android Speech TTS

上記2点を修正したことで、Androidの実機で動くようになりました。
そのうち、こちらのアセットの紹介もしたいと思います。

Holographic Academyの解説「Hologram 211 - Gesture」

前回に引き続き、Holographic Academyについてです。

前回まではこちらです。

magicbullet.hatenablog.jp

magicbullet.hatenablog.jp


今回はHologram 211 Gesture について解説します。

続きを読む

HoloLensのDevcice PortalをMacで使用する

===
2017/3/9
Live PreviewをMacでも利用できたことを追記しました
===



HoloLensには、というよりWindows 10 搭載のデバイスには、Device Portalという機能があります。

詳細は下記で紹介した通り、デバイス詳細情報をWebブラウザ経由で見ることができます。

magicbullet.hatenablog.jp

HoloLensのDevice Portalを使うと、HoloLensのカメラ越しの映像(Live Preview)をブラウザで見ることができます。


ところで、MacでもDevice Portalを見ることはできます。

f:id:Takyu:20170209215351j:plain

しかし、

f:id:Takyu:20170209215734j:plain

のようにエラーメッセージが出てしまい、HoloLensのLive Previewを見ることはできません。

===

元々試した環境はSafariでした。@z_zabaglione さんのご指摘により、Chromeであれば動くことを確認しました。

当時試したときと同じ環境(Sierra 10.12.3)で、私のMacでもChromeを使って動かすことができました。

f:id:Takyu:20170309173854j:plain


参考のため、以下、Parallel Desktopを使った場合についても残しておきます。

===



ただし、仮想化ソフト「Parallel Desktop」を使うことで見ることができました。試した環境は下記の通りです。

[Mac]

Mac Book Pro Late 2016
・Sierra 10.12.3
・Parallel Desktop 12.1.3
・USB type-Cとtype-Aの変換ケーブルでHoloLensと接続

[HoloLens]

Windows Version 14393.693.x86 fre rs1_release 161220-1747


このようになります。

■ Live Preview

f:id:Takyu:20170209220842j:plain

■ 3D View

f:id:Takyu:20170209221045j:plain

補足

(1) 有線でのDevice Portal接続方法

ちなみに、Holographic AcademyチュートリアルではWifi経由のアプリインストールデバッグ方法しか書いてありませんが、HoloLensは有線でのアプリインストールやDevice Portal 接続が可能です。

有線でDevice Portalに接続する場合、USBケーブルでPCと接続します。

f:id:Takyu:20170209221404j:plain

すると、このようにMacWindowsのどちらに接続するかを聞かれるのでWindowsを選択します。


続けて、Webブラウザ(Edge以外は動作未確認)から

http://127.0.0.1:10080

にアクセスすればOKです。


(2) Device PortalでのLive Previewに失敗する

理由不明ですが、なぜかLive Previewの表示に失敗することがあります。

f:id:Takyu:20170209221818j:plain


これはPrallel Desktopだけでなく、Windows 10 NativeのPCでも起きることがあります。

USBケーブルの抜き差しか、Windows10PCの再起動などを繰り返すことで直ります。

終わりに

私は普段Macを使っているのですが、下記の情報の通り、HoloLensアプリ開発はMacで一通りできます。

qiita.com

Parallel Desktop上にVisual Studioを入れることで、このようにアプリインストールもできます。

f:id:Takyu:20170205172910j:plain

今回、Live Previewを支えることもわかったので、デモもMacでできそうですね。

Holographic Academyの解説「Hologram 210 - Gaze」

前回に引き続き、Holographic Academyについてです。

前回の「Hologram 101」は、HoloLensの基本機能を網羅したシンプルな例でした。

2XX以降は、それぞれの機能について発展的な使い方を紹介しています。

今回はGaze(見つめる)についてです。

続きを読む

Holographic Academyの解説「Hologram 101」

====
2017/2/4 追記

Chapter 6のSpatial Mappingでチュートリアル通りに動かなかった箇所が解決したので、動作確認の動画を追加しました。

====

Microsoftでは、「Holographic Academy」というDeveloper用のページがあります。

ここには、ゼロからHoloLens開発を始める人向けに、相当細かく手順が書かれています。


なお、HoloLensのアプリ開発を進めやすくするため、Microsoftからは必要なソースコード、Prefab、シェーダなどをまとめた、HoloToolkitも公開されています。

github.com

ただし、Holographic Academyでは機能別に解説しており、Unity標準のAPIがすぐにわかるように記述されているので、HoloToolKitを読む前にソースコード理解を兼ねてAcademyを試してみるのも良いと思いました。

そこで、今後HoloLensアプリ開発の勉強を兼ねて、まずはHolographic Academyの「Hologram 101」を解説してみました。

はじめに

HoloAcademyの最初の二つ、「Holograms 100: Getting started with Unity」と、「Holograms 101E: Introduction with Emulator」は、以前書いた内容とかぶるので省略します。

magicbullet.hatenablog.jp

また、Holo Academyに記載されている手順はかなり丁寧なので、手順そのままで理解に困らなかった場所については、今回のHologram101以降についても説明を簡略化する予定です。

さて、今回は「Holograms 101」の内容を解説します。

続きを読む