Unity の推奨設定Recommended settings for Unity

Unity では、一般に、すべてのプラットフォームの平均的なケースは、既定のオプションのセットを提供します。Unity provides a set of default options that are generally the average case for all platforms. ただし、Unity は、プロジェクトの設定を切り替えることができます複合現実に固有の動作の一部を提供します。However, Unity offers some behaviors specific to mixed reality that can be toggled through project settings.

パフォーマンスの高い環境をセットアップPerformant environment set-up

低品質の設定Low quality settings

変更することが重要、 Unity の品質設定お客様の環境にVery Lowします。It is important to modify the Unity Quality settings for your environment to Very Low. これによって、アプリケーションが適切なフレーム レートですばやく実行されていることを確認します。This will help ensure your application is running performantly at the appropriate framerate. Hololens の開発を非常に重要になります。This is extremely significant for Hololens development. VR エクスペリエンスの強化、デスクトップの仕様によって、イマーシブ ヘッドセットでの開発用に最低品質パラメーターを指定せずには、フレーム レートがまだ達成できます。For development on immersive headsets, depending on the specs of the desktop powering the VR experience, one can still achieve framerate without the lowest quality parameters.

Unity 2018 LTS 以降では、プロジェクトの品質レベルを設定できます。In Unity 2018 LTS+, the project's quality level can be set by:

[編集 > プロジェクト設定 > 品質> 設定、既定] をクリックして、下向きの矢印をVery Low品質レベルUnder Edit > Project Settings > Quality > Set the Default by clicking on the downward arrow to the Very Low quality level

照明の設定Lighting settings

品質のシーンの設定と同様に、Mixed Reality アプリに最適なライティング設定を設定する必要があります。Similar to Quality scene settings, it is important to set optimal Lighting settings for your Mixed Reality application. シーンに最もパフォーマンスに与える影響を与える、通常、照明の設定は、Unity でリアルタイム グローバル照明します。In Unity, the Lighting setting that will usually have the greatest performance impact on your scene is Realtime Global Illumination. これ移動して無効にできますウィンドウ > レンダリング > 照明設定 > リアルタイムグローバルの照明します。This can be turned off by going under Window > Rendering > Lighting Settings > Realtime Global Illumination.

別の照明設定がある組み込まれたグローバルの照明します。There is another lighting setting, Baked Global Illumination. この設定は、イマーシブ ヘッドセットの高性能、視覚的にも結果を指定できますが、通常は HoloLens の開発には適用できません。This setting can provide performant and visually striking results on immersive headsets but is generally not applicable for HoloLens development. グローバル Illumniation を組み込まれたは不明な変化する環境の性質により、HoloLens のシーンでは見つかりませんは通常、静的な Gameobject にのみ計算されます。Baked Global Illumniation is only calculated for static GameObjects which are generally not found in HoloLens scenes due to the nature of an unknown and changing environment.

お読みくださいUnity からのグローバルの照明詳細についてはします。Please read Global Illumination from Unity for more information.

注意

リアルタイムのグローバル照明設定されているシーンあたりのため開発者は、プロジェクトでのすべての Unity シーンには、このプロパティを保存する必要があります。Realtime Global Illumination is set per-scene and thus developers must save this property for every Unity scene in their project.

インスタンス化のレンダリング パスを 1 つのパスSingle pass instancing rendering path

複合現実のアプリケーションで、シーンがレンダリングされる 2 回、1 回、ユーザーに目ごとにします。In Mixed Reality applications, the scene is rendered twice, once for each eye to the user. 従来の 3D の開発と比較して、この実質的に 2 倍を計算する必要がある作業の量。Compared to traditional 3D development, this effectively double the amount of work that needs to be computed. したがって、CPU および GPU 時間の両方を保存する Unity で最も効率的なレンダリング パスを選択する重要なは。Thus, it is important to select the most efficient rendering path in Unity to save both on CPU and GPU time. 1 回インスタンス化されたレンダリングは、Mixed Reality アプリ用の Unity レンダリング パイプラインを最適化し、したがってをお勧めこの設定を有効にするすべてのプロジェクトに対して既定でします。Single pass instanced rendering optimizes the Unity rendering pipeline for Mixed Reality apps and thus it is recommended to enable this setting by default for every project.

Unity プロジェクトでこの機能を有効にするにはTo enable this feature in your Unity Project

  1. 開いているPlayer XR 設定(に移動編集 > プロジェクト設定 > Player > XR 設定)Open Player XR Settings (go to Edit > Project Settings > Player > XR Settings)
  2. 選択1 つ渡すインスタンス化から、ステレオのレンダリング方法ドロップダウン メニュー (仮想現実サポートチェック ボックスを選択する必要があります)Select Single Pass Instanced from the Stereo Rendering Method drop-down menu (Virtual Reality Supported checkbox must be checked)

この表示方法の詳細については、Unity から、次の記事を読み取ります。Read the following articles from Unity for more details with this rendering approach.

注意

1 つ渡すレンダリングをインスタンス化で 1 つの一般的な問題は、開発者が既に既存のカスタム シェーダーに書かれていない場合に発生します。 インスタンス化します。One common issue with Single Pass Instanced Rendering occurs if developers already have existing custom shaders not written for instancing. この機能を有効にした後は、開発者は 1 つ目のいくつかの Gameobject のみレンダリングをことがあります。After enabling this feature, developers may notice some GameObjects only render in one eye. これは、関連付けられているカスタムのシェーダーの適切なプロパティがあるないためにインスタンス化します。This is because the associated custom shaders do not have the appropriate properties for instancing.

参照してください1 つ渡すステレオのレンダリング HoloLensから Unity のこの問題に対処する方法See Single Pass Stereo Rendering for HoloLens from Unity for how to address this problem

深度バッファーの共有を有効にします。Enable depth buffer sharing

有効にするユーザーの認識からホログラム安定性の向上を実現するために推奨は、深度バッファー共有Unity でのプロパティ。To achieve better hologram stability from the perception of the user, it is recommended to enable the Depth Buffer Sharing property in Unity. これをオン、Unity は、Windows Mixed Reality プラットフォームを使用してアプリケーションによって生成された深度の情報を共有します。By turning this on, Unity will share the depth map produced by your application with the Windows Mixed Reality platform. プラットフォームはより具体的には、アプリケーションによって表示される任意の特定のフレームのシーンのホログラム安定性を最適化することになります。The platform will then be able to better optimize hologram stability specifically for your scene for any given frame being rendered by your application.

Unity プロジェクトでこの機能を有効にするにはTo enable this feature in your Unity Project

  1. 開いているPlayer XR 設定(に移動編集 > プロジェクト設定 > Player > XR 設定)Open Player XR Settings (go to Edit > Project Settings > Player > XR Settings)
  2. チェック ボックスをオン深度バッファーの共有を有効にする 仮想現実 Sdk > Windows Mixed Reality拡張 (仮想実際にはサポートされているチェック ボックスを選択する必要があります)Select the checkbox for Enable Depth Buffer Sharing under Virtual Reality SDKs > Windows Mixed Reality expansion (Virtual Reality Supported checkbox must be checked)

選択することを推奨さらに、 16 ビットの深度下、深度形式Hololens の開発の特に、このパネルで設定します。Further, it is recommended to select 16-bit depth under the Depth Format setting in this panel, especially for Hololens Development. 24 ビットと比較した 16 ビットを選択すると、帯域幅要件大幅に削減されての低いデータ移動と処理に必要になります。Selecting 16-bit compared to 24-bit will significantly reduce the bandwidth requirements as less data will need to be moved/processed.

Windows Mixed Reality プラットフォーム ホログラム安定性を最適化するためには、深度バッファーが正確では、画面に表示される、ホログラムの一致を使用します。In order for the Windows Mixed Reality platform to optimize hologram stability, it relies on the depth buffer to be accurate and match any rendered holograms on screen. したがって、上の共有、深度バッファーが重要ですの深さをレンダリングもの色を表示する場合。Thus, with depth buffer sharing on, it is important when rendering color, also render depth. Unity では、不透明なまたは TransparentCutout 資料のほとんどは、既定では、透過的な深さにレンダリングされますされテキスト オブジェクトは通常表示されません深さシェーダー依存などです。In Unity, most Opaque or TransparentCutout materials will render depth by default but transparent and text objects will generally not render depth although this is shader dependent, etc.

Mixed Reality Toolkit 標準のシェーダーを使用して、透過的なオブジェクトの深さを表示するために: 場合If using the Mixed Reality Toolkit Standard shader, to render depth for transparent objects:

  1. MRTK 標準シェーダーを使用しているが透明の素材を選択し、インスペクターのエディター ウィンドウを開くSelect the tranparent material that is using the MRTK Standard shader and open the Inspector editor window
  2. 設定レンダリング モードカスタム設定モードTransparent最後に設定し、深さ書き込みSet Rendering Mode to Custom then set Mode to Transparent and finally set Depth Write to On

注意

開発者は必要があります近く/後方面のカメラの設定と共にこれらの値を変更するときに、Z ファイティングの注意してください。Developers should beware of Z-fighting when changing these values along with the camera's near/far plane settings. 2 つの gameobject に同一のピクセルと深度バッファー (つまり、の忠実性の制限のためにレンダリングするときに発生する Z ファイティングZ-Fighting occurs when two gameobjects try to render to the same pixel and due to limitations in fidelity of the depth buffer (i.e z の深さ)、Unity は、どのオブジェクトが、その他の前にわかりません。z depth), Unity cannot discern which object is in front of the other. 開発者は、その 2 つのゲーム オブジェクトとの間、ちらつきに注意してください戦うz 深さの値が同じにします。Developers will note a flickering between two game objects as they fight for the same z-depth value. これは、カメラからの z 深さ時に計算するには、各オブジェクトの値の範囲が広いが存在するが、24 ビット深度形式に切り替えることで解決できます。This can be solved by switching to 24-bit depth format as there will be a larger range of values for each object to calculate upon for their z-depth from the camera.

ただしをお勧め、特に Hololens の開発、カメラの変更の近くのはるかに範囲を小さくする代わりにプレーンし、16 ビットの深さを維持したフォーマットです。However, it is recommended, particularly for Hololens development, to modify the camera's near and far planes to a smaller range instead and retaining the 16-bit depth format. Z 深さがほぼとカメラに沿って値の範囲にマップされてない直線的に平面。The z-depth is non-linearly mapped to the range of values along the near and far camera planes. これを選択して変更できる、 Main Cameraシーンでインスペクター、変更、近い & までにクリップの平面値 (つまり、その期間を短縮するにはThis can be modified by selecting the Main Camera in your scene and under Inspector, change the Near & Far Clipping Plane values to reduce their range (i.e x 値を 100 m またはその他の 1000 m などです。)from 1000m to 100m or other x value, etc.)

Il2cpp バック エンドの構築Building for IL2CPP

Unity で .NET バックエンドおよびしたがってをお勧めします開発者を利用するスクリプトのサポートは非推奨とil2cpp バック エンドUWP 用 visual studio でビルドします。Unity has deprecated support for the .NET scripting backend and thus recommend developers to utilize IL2CPP for their UWP visual studio builds. Unity から visual studio ソリューションのビルドが、これにより、さまざまな利点があります、 il2cpp バック エンド大幅に分化古い .NET メソッドよりも遅いことができます。Although this brings various advantages, building your visual studio solution from Unity for Il2CPP can be signficantly slower than the old .NET method. そのため、強くお勧め構築するためのベスト プラクティスに従うil2cpp バック エンド開発イテレーション時に保存します。Thus, it is highly recommended to follow best practices for building IL2CPP to save on development iteration time.

  1. 再構築済みのファイルをあるを使用して、毎回同じディレクトリにプロジェクトのビルドによってインクリメンタル ビルドを活用Leverage incremental building by building your project to the same directory every time, re-using the pre-built files there
  2. プロジェクトのマルウェア対策ソフトウェアのスキャンを無効にするし、フォルダーをビルドDisable anti-malware software scans for your project & build folders
    • 開いているウイルスと脅威保護Windows 10 設定アプリの下Open Virus & threat protection under your Windows 10 settings app
    • 選択設定の管理 ウイルスと脅威保護の設定Select Manage Settings under Virus & threat protection settings
    • 選択追加または削除する除外下、除外セクションSelect Add or remove exclusions under the Exclusions section
    • クリックして 、除外の追加選択フォルダーは、Unity プロジェクトのコードが含まれてし、ビルドの出力Click Add an exclusion and select the folder contain your Unity project code and build outputs
  3. ビルドするための SSD を使用します。Utilize an SSD for building

お読みくださいil2cpp バック エンドのビルド時間を最適化するの詳細。Please read Optimizing Build Times for IL2CPP for more info.

注意

さらに、可能性があるセットアップ都合のよい、キャッシュ サーバー、特に大きな資産 (スクリプト ファイルを除く) または絶えずを Unity プロジェクトの場合は、シーン/資産を変更します。Furthermore, it may be beneficial to setup a Cache Server, especially for Unity projects with a large amount of assets (excluding script files) or constantly changing scenes/assets. プロジェクトを開くときに Unity 開発者のコンピューターで、内部キャッシュ フォーマット正規の資産に格納します。When opening a project, Unity stores qualifying assets into an internal cache format on the developer machine. 項目を再インポートし、ため変更されたときに、再処理する必要があります。Items must be re-imported and thus re-processed when modified. このプロセスは 1 回実行し、キャッシュ サーバーに保存され、したがってすべての開発者が新しい変更をローカルでの再インポート処理ではなく、時間を節約するには、他の開発者と共有します。This process can be done once and saved in a Cache Server and consequently shared with other developers to save time, instead of every developer processing the re-import of new changes locally.

発行プロパティPublishing properties

Holographic のスプラッシュ スクリーンHolographic splash screen

HoloLens には、mobile クラス CPU と GPU、つまり、アプリの読み込みをもう少し長くかかる場合があります。HoloLens has a mobile-class CPU and GPU, which means apps may take a bit longer to load. アプリの読み込み中にユーザーが黒で表示し、そのため、疑問に思う何が起こっています。While the app is loading, users will just see black, and so they may wonder what's going on. 読み込み中には、それらを組み込みますするには、holographic スプラッシュ スクリーンを追加できます。To reassure them during loading, you can add a holographic splash screen.

Holographic のスプラッシュ スクリーンを切り替えます。To toggle the holographic splash screen:

  1. 移動して編集 > プロジェクト設定 > PlayerページGo to Edit > Project Settings > Player page
  2. をクリックして、 Windows ストアタブし、開く、スプラッシュ イメージセクションClick on the Windows Store tab and open the Splash Image section
  3. 必要なイメージの適用、 Windows Holographic > Holographic スプラッシュ イメージプロパティ。Apply your desired image under the Windows Holographic > Holographic Splash Image property.
    • 切り替え、 Unity スプラッシュ画面を表示オプションが有効または Unity のブランドのスプラッシュ スクリーンを無効にします。Toggling the Show Unity Splash Screen option will enable or disable the Unity branded splash screen. Unity Pro ライセンスがない、スプラッシュ スクリーンをブランド化された Unity 常に表示されます。If you do not have a Unity Pro license, the Unity branded splash screen will always be displayed.
    • 場合、 Holographic スプラッシュ イメージが適用される、常に表示する Unity スプラッシュ画面を表示 チェック ボックスを有効または無効にするかどうかに関係なく。If a Holographic Splash Image is applied, it will always be displayed regardless of whether the Show Unity Splash Screen checkbox is enabled or disabled. カスタム holographic ロゴ イメージを指定することは、Unity Pro ライセンスで開発者にできるだけです。Specifying a custom holographic splash image is only available to developers with a Unity Pro license.
Unity のスプラッシュ画面を表示します。Show Unity Splash Screen Holographic スプラッシュ イメージHolographic Splash Image 動作Behavior
オンOn なしNone または、アプリが読み込まれる、長い方まで 5 秒間は、既定の Unity スプラッシュ スクリーンを表示します。Show default Unity splash screen for 5 seconds or until the app is loaded, whichever is longer.
オンOn カスタムCustom 5 秒間、またはアプリが読み込まれる、長い方までは、カスタムのスプラッシュ スクリーンを表示します。Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.
オフOff なしNone アプリが読み込まれるまでは、透明な黒 (nothing) を表示します。Show transparent black (nothing) until app is loaded.
オフOff カスタムCustom 5 秒間、またはアプリが読み込まれる、長い方までは、カスタムのスプラッシュ スクリーンを表示します。Show Custom splash screen for 5 seconds or until the app is loaded, whichever is longer.

お読みくださいUnity のスプラッシュ スクリーン ドキュメントの詳細。Please read Unity's Splash Screen documentation for more info.

損失の追跡Tracking loss

Mixed reality ヘッドセットが周囲を構築するには、環境が表示される依存座標系の世界ロックホログラムの位置を使用できます。A Mixed reality headset depends on seeing the environment around it to construct world-locked coordinate systems, which allow holograms to remain in position. ヘッドセットは世界で自体を見つけられませんが、ヘッドセットといいますが追跡を紛失します。When the headset is unable to locate itself in the world, the headset is said to have lost tracking. このような場合は、空間ステージ、空間アンカー空間のマッピングなど座標 world ロックされているシステムに依存する機能は機能しません。In these cases, functionality dependent on world-locked coordinate systems, such as spatial stages, spatial anchors and spatial mapping, do not work.

Unity の既定の動作がレンダリング ホログラムを停止、一時停止するには追跡の損失が発生した場合、ゲーム ループ、表示通知を快適に失われた追跡に従ってユーザーの視線入力します。If a loss of tracking occurs, Unity's default behavior is to stop rendering holograms, pause the game loop, and display a tracking lost notification that comfortably follows the users gaze. カスタム通知が追跡用の形式で提供することもできますが失われるイメージ。Custom notifications can also be provided in the form of a tracking loss image. 全体の操作の追跡に依存するアプリの場合は、Unity の追跡が再取得されるまでに完全にこれを処理できるようにするための十分なは。For apps that depend upon tracking for their whole experience, it's sufficient to let Unity handle this entirely until tracking is regained. 開発者は、損失の追跡中に表示されるカスタム イメージを指定できます。Developers can supply a custom image to be shown during tracking loss.

追跡の失われたイメージをカスタマイズするには。To customize the tracking lost image:

  1. 移動して編集 > プロジェクト設定 > PlayerページGo to Edit > Project Settings > Player page
  2. をクリックして、 Windows ストアタブし、開く、スプラッシュ イメージセクションClick on the Windows Store tab and open the Splash Image section
  3. 必要なイメージの適用、 Windows Holographic > 追跡損失イメージプロパティ。Apply your desired image under the Windows Holographic > Tracking Loss Image property.

自動一時停止のオプトアウトOpt-out of automatic pause

追跡は必要としない一部のアプリ (例:方向専用のアプリ360 度のビデオの閲覧者など) または処理の追跡中に中断なくが失われます。 続行する必要があります。Some apps may not require tracking (e.g. orientation-only apps such as 360-degree video viewers) or may need to continue processing uninterrupted while tracking is lost. このような場合は、アプリは追跡動作の既定の損失をオプトアウトできます。In these cases, apps can opt out of the default loss of tracking behavior. これを選択する開発者は追跡が失われるシナリオでは正しくレンダリングされないオブジェクトを非表示/無効化する責任を負います。Developers who choose this are responsible for hiding/disabling any objects which would not render properly in a tracking-loss scenario. ほとんどの場合、そのケースは、本文がロックされているコンテンツをレンダリングするのには、推奨されるコンテンツのみを中心に、メイン カメラ。In most cases, the only content that is recommended to be render in that case is body-locked content, centered around the main camera.

自動一時停止の動作からオプトアウトします。To opt out of automatic pause behavior:

  1. 移動して編集 > プロジェクト設定 > PlayerページGo to Edit > Project Settings > Player page
  2. をクリックして、 Windows ストアタブし、開く、スプラッシュ イメージセクションClick on the Windows Store tab and open the Splash Image section
  3. 変更、 Windows Holographic > の追跡が失われる一時停止とイメージの表示チェック ボックスをオンします。Modify the Windows Holographic > On Tracking Loss Pause and Show Image checkbox.

追跡イベントの損失Tracking loss events

追跡が失われると、カスタム動作を定義するには、グローバルな処理追跡イベントの損失します。To define custom behavior when tracking is lost, handle the global tracking loss events.

機能Capabilities

特定の機能を活用するためにアプリでは、自らのマニフェストで適切な機能を宣言にする必要があります。For an app to take advantage of certain functionality, it must declare the appropriate capabilities in its manifest. すべての後続のプロジェクトのエクスポートに含まれるように、Unity でマニフェストの宣言を作成できます。The manifest declarations can be made in Unity so they are included in every subsequent project export.

複合現実アプリケーションの機能を有効にすることができます。Capabilities can be enabled for a Mixed Reality application by:

  1. 移動して編集 > プロジェクト設定 > PlayerページGo to Edit > Project Settings > Player page
  2. をクリックして、 Windows ストア タブを開きます、公開設定セクションを探して、機能一覧Click on the Windows Store tab and open the Publishing Settings section and look for the Capabilities list

Holographic のアプリ用の一般的に使用される Api を有効にするための適用可能な機能は次のとおりです。The applicable capabilities for enabling the commonly used APIs for Holographic apps are:

機能Capability Api の機能を必要とします。APIs requiring capability
SpatialPerceptionSpatialPerception SurfaceObserverSurfaceObserver
WebCamWebCam PhotoCapture と VideoCapturePhotoCapture and VideoCapture
PicturesLibrary/VideosLibraryPicturesLibrary / VideosLibrary PhotoCapture または VideoCapture、それぞれ (格納するときにキャプチャしたコンテンツ)PhotoCapture or VideoCapture, respectively (when storing the captured content)
マイクMicrophone VideoCapture (オーディオをキャプチャ) するときに、DictationRecognizer、GrammarRecognizer、および KeywordRecognizerVideoCapture (when capturing audio), DictationRecognizer, GrammarRecognizer, and KeywordRecognizer
internetClientInternetClient DictationRecognizer (および Unity Profiler を使用する)DictationRecognizer (and to use the Unity Profiler)

関連項目See also