xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Vuforia 6.2.x が Unity 5.5.x の Windows Store App 環境下でビルドエラーになるのを回避する方法

Tokyo HoloLens Meetup vol.2 の LT で Vuforia という AR ライブラリについて話していたので、「面白そう!」と思ってチャレンジしてみています。AR マーカー的なものはまだ作ったことがなかった上に HoloLens に対応していると聞いて俄然ヤル気に!

と思ってパッと調べてみたら昨年の //Build/ 2016 でも HoloLens を使ったデモをしていたようで。(全然覚えてないけど…

Vuforia 自体の基本的な使い方や設定については詳しい記事が山ほどあるので、ここでは割愛します。

サンプルがビルドエラーになる

Vuforia 初心者なので、まず手始めに HoloLens のサンプルを動かしてみよう!ということで Vuforia のサイトからサンプルをダウンロードします。「Digital Eyewear」のカテゴリーの Unity アイコンのものが対象です。

f:id:xin9le:20170402191358p:plain

.unitypackage が落ちてきたはずなので Unity にインポートし、「Vuforia-2-Hololens」のシーンを開きます。HoloLens で実機確認したいので何も考えずに Windows Store App 向けにビルドします。すると… ビルドエラーが出る!サンプルがいきなり動かない!/(^o^)\

f:id:xin9le:20170402194545p:plain

Reference rewriter: Error: method `System.Void UnityEngine.RenderTexture::set_generateMips(System.Boolean)` doesn't exist in target framework. It is referenced from Vuforia.UnityExtensions.dll at System.Void Vuforia.DistortionRenderingBehaviour::CreateRenderTexture().
UnityEngine.Debug:LogError(Object)
PostProcessWinRT:RunReferenceRewriter() (at C:/buildslave/unity/build/PlatformDependent/WinRT/SharedSources/CSharp/PostProcessWinRT.cs:560)
PostProcessWinRT:Process() (at C:/buildslave/unity/build/PlatformDependent/WinRT/SharedSources/CSharp/PostProcessWinRT.cs:127)
UnityEditor.HostView:OnGUI()

手元の環境は「Unity 5.5.0p4」なのですが、どうやら Unity 5.5 から RenderTexture.generateMips プロパティが RenderTexture.autoGenerateMips に名称が変更されたようで、Vuforia.UnityExtensions.dll の内部で古いバージョンの API を利用していることが理由でビルドエラーになっているっぽいです。

Graphics: Added RenderTexture.GenerateMips script API for manual control over mipmap generation. Renamed existing RenderTexture.generateMips property to autoGenerateMips.

API Updater を使って回避

Unity には API 変更の互換性を担保するための API Updater という機能が搭載されています。今回はこれを使って問題が出ているアセンブリを修正すれば OK です。

「Vuforia\Scripts\Internal\Vuforia.UnityExtensions.dll」を右クリックして、コンテキストメニューから [Run API Updater…] を実行します。

f:id:xin9le:20170402200301p:plain

これで晴れて Windows Store App 向けにビルドが通るようになります。あとは HoloLens の実機で動作確認すれば良いでしょう。

参考

これが見つけられなかったら解決できませんでした。感謝×2!