yotiky Tech Blog

とあるエンジニアの備忘録

HoloLensの2Dアプリランチャー(ウィンドウ)の画像が更新されない場合の対処法

HoloLensでアイコンやスプラッシュなどの画像を設定する項目の中に、2Dアプリランチャー(ウィンドウ)の画像を設定するところがあります。ここの設定で画像を変更してもHoloLensで更新がかからなかったので、その場合の対処法を書いておきます。

目次

TL;DR

2Dアプリランチャー(ウィンドウ)の画像を更新した場合はHoloLens自体を再起動してください。 アイコンとスプラッシュはビルドしてデプロイすれば即時反映されます。なお、ストア周りの画像は動作未確認です。

確認環境

アイコンやスプラッシュなどの画像を生成する

アプリのアイコンやスプラッシュでは、同じ絵面でも何種類ものサイズの画像を用意しなければなりません。 まずは、もととなる画像を一枚用意しましょう。
高橋忍さんのツール「UWP Logo Maker ver.1.0」を使用するか、Visual Studio 2017であれば Package.appxmanifest の [ヴィジュアル資産] タブにある「資産ジェネレーター」でも生成できます。
資産ジェネレーターは出力ファイルを細かく設定できます。特定の資産やスケールに絞れるので何度も生成し直す場合は煩わしさが少ないかもしれません。お手軽に生成するならUWP Logo Makerといったところでしょうか。ただし、サイズなどのに制限がありますのでそこは注意してください。

f:id:yotiky:20190215172616p:plain

さて、HoloLensのアプリに必要な画像のサイズやスケールですが、Submitting an app to the Microsoft Store - Mixed Reality | Microsoft Docsに以下の表があります。

Required Asset Recommended Scale Image Format Where is this displayed?
Square 71x71 Logo Any PNG N/A
Square 150x150 Logo 150x150 (100% scale) or 225x225 (150% scale) PNG Start pins and All Apps (if 310x310 isn't provided), Store Search Suggestions, Store Listing Page, Store Browse, Store Search
Wide 310x150 Logo Any PNG N/A
Store Logo 75x75 (150% scale) PNG Partner Center, Report App, Write a Review, My Library
Splash Screen 930x450 (150% scale) PNG 2D app launcher (slate)

また、HoloLensで推奨するAssetもあるようです。なければ上記表にあるとおり Square 150x150 Logo が使われます。

Recommended Assets Recommended Scale Where is this displayed?
Square 310x310 Logo 310x310 (150% scale) Start pins and All Apps

結局最低限必要なものは、Square 150x150 Logo、Store Logo、Splash Screenでしょうか。 この3点は、UWP Logo Makerのdefault Only オプションで出力されます。Store Logoが推奨より小さい(50x50 100% scale)ですが、それ以外は200% scaleなので推奨以上かと思います。

アプリケーションに設定する

アイコンやスプラッシュなどの設定はUnity のPlayerSettingsにあります。 Iconのブロックにある「Store Logo」と「Universal 10 Tiles and Logos」にそれぞれ設定します。 また、Splash Image ブロックにある「Windows」と「Windows Holographic」にも設定します。 2Dアプリランチャー(ウィンドウ)の設定箇所は、Splash Image ブロックの「Windows」になります。

Icon ブロック

f:id:yotiky:20190215172659p:plainf:id:yotiky:20190215172703p:plainf:id:yotiky:20190215172706p:plainf:id:yotiky:20190215172710p:plainf:id:yotiky:20190215172714p:plain

Splash Image ブロック

f:id:yotiky:20190215172757p:plainf:id:yotiky:20190215172801p:plain

実機で確認する

UnityからC# プロジェクトを出力して生成されるソリューションでは、Assetsフォルダ内にアイコンなどの画像を、Package.appxmanifest の [ヴィジュアル資産] タブで各設定を確認できます。

さて本題ですが、一度も設定したことがないアプリで初めて設定した場合は即時反映されます。しかしそれ以降、画像を更新しても、他の画像に差し替えても、Unityが出力するテンポラリーやUWPフォルダなどを消しても、Unity内でもとの画像自体を消してしまっても、HoloLensの2Dアプリランチャー(ウィンドウ)ではGhostのように最初に設定した画像が出続けます。

HoloLens側で正しく反映するには、HoloLensを再起動(Goodbye&Hello)する必要があるようです。HoloLens側のOS(もしくはMR向けのミドル層あたり?)でキャッシュを持っている感じですね。知ってればなんてことはありませんが、知らないと結構な時間を食われますので気に留めておきましょう。

以下は、検証した際のキャプチャです。
並びの写真で1つ目に対して2つ目は白紙の画像で更新した結果(HoloLensは再起動していない)になります。2Dアプリランチャーだけ以前の画像が出続けています。確認した範囲で使用された画像は、IconブロックのC(Square 150x150 Logo)と、Splash ImageブロックのA(Windows Holographic)、F(Windows)の3点だけでした。

ピンどめしたメニュー
f:id:yotiky:20190215172834j:plainf:id:yotiky:20190215172838j:plain

すべてのアプリ
f:id:yotiky:20190215172852j:plainf:id:yotiky:20190215172856j:plain

スプラッシュ画面
f:id:yotiky:20190215172915j:plainf:id:yotiky:20190215172918j:plain

2Dアプリランチャー
f:id:yotiky:20190215172928j:plainf:id:yotiky:20190215172932j:plain