Skip to content

DashboardCanvas

Canvas を SteamVR ダッシュボードのタブとして表示する、このプロジェクトの中心コンポーネントです。ウィザードで生成すると「名前 Dashboard Rig」のルートに付いています。

インスペクターの各プロパティ

オーバーレイ識別

Overlay Key

SteamVR がオーバーレイを区別するための ID です。SteamVR 全体で重複してはいけません。

空のままで大丈夫です。 空の場合は、プロジェクト名とオブジェクト名から自動で作られます。日本語の名前でも問題ないように、英数字だけに整形してから使います。

自分で入れたいときは、他のアプリと被らないように 会社名.アプリ名.画面名 のような形式にするのが安全です。使える長さには上限があるので、英数字とピリオドで短めに付けてください。

どういうときに自分で入れるのか

自動生成の Key にはオブジェクトの内部番号が混ざるため、実行のたびに変わることがあります。SteamVR の設定でオーバーレイごとの表示設定を保存したい場合など、毎回同じ ID であってほしいときは固定の Key を入れてください。

Overlay Name

ダッシュボード下部のタブにレーザーを当てたときに表示される名前です。こちらは自由な文字列で構いません。日本語も使えます。

描画ソース

Source Camera

画面を描画するカメラです。ウィザードで生成した場合は Overlay Camera が設定済みです。

未設定のまま再生した場合は、子オブジェクトからカメラを探して使います。

Render Texture

カメラの映像を書き込むテクスチャです。この内容が毎フレーム、ダッシュボードのオーバーレイに転送されます。

ウィザードで生成した場合は、Assets/DashboardCanvasGenerated に作られたテクスチャが設定済みです。

未設定のまま再生した場合は次の順で自動解決します。

  1. Source Camera に Target Texture が設定されていればそれを使う
  2. それも無ければ、下の Auto Texture Width / Height のサイズで実行時に自動生成する

Auto Texture Width / Auto Texture Height

Render Texture を実行時に自動生成する場合のサイズです。既定は 1024 × 768。

ウィザードで生成した構成ではテクスチャが最初から設定されているため、この値は使われません。スクリプトから DashboardCanvas を動的に組み立てるときのための項目です。

表示設定

Width In Meters

ダッシュボード上での画面の横幅です。単位はメートルで、既定は 2.5。

縦幅は指定できません。テクスチャの縦横比に合わせて自動で決まります。

再生中に値を変えるとすぐ反映されるので、ちょうどいいサイズをスライダーで探せます。再生中に変えた値は停止すると戻る点にだけ注意してください。値を決めたら、コンポーネントを右クリックして Copy Component、停止後に Paste Component Values で保存できます。

Show In Dashboard

ダッシュボードにタブを表示するかどうかです。既定はオン。

実行中に切り替えると、タブがその場で消えたり戻ったりします。オフの間もアプリとウィンドウ表示は動き続けます。スクリプトからは dashboard.showInDashboard = false; のように書き換えるだけです。

サムネイル

Thumbnail File Name

ダッシュボード下部のタブに表示されるアイコン画像です。

空のままだと自動生成の丸いアイコンになります。とりあえず動かす分にはこれで十分です。

自分の画像にしたいときは:

  1. Assets の中に StreamingAssets という名前のフォルダを作る
  2. そこに png か jpg を置く。サイズは 128 × 128 くらいが目安
  3. このプロパティにファイル名を入れる。例: icon.png。StreamingAssets の中にさらにフォルダを掘った場合は icons/tab.png のように相対パスで

画像の読み込みに失敗した場合は、警告を出したうえで自動生成アイコンに切り替わります。

uGUI 入力

Graphic Raycaster

レーザーポインタの入力をどの Canvas の UI に届けるかの指定です。ウィザード生成時は Overlay Canvas のものが設定済みです。

未設定の場合は子オブジェクトから自動で探します。

Event System

UI イベントの土台になるコンポーネントです。未設定の場合はシーン全体から自動で探します。

どちらも普通は触る必要はありません。Canvas を複数持つ変わった構成にしたときだけ、どの Canvas に入力を流すかをここで明示してください。

VR キーボード

Use VR Keyboard

レーザーで InputField を選んだとき、SteamVR のキーボードを自動で表示するかどうかです。既定はオン。

打った文字はその場で InputField に反映され、Done で確定、確定せずに閉じると元の文字列に戻ります。日本語も化けません。ウィンドウ側の物理キーボード入力には影響しません。

スクリプトから使う

csharp
using SteamVRDashboard;

public class Example : MonoBehaviour
{
    public DashboardCanvas dashboard;

    void Update()
    {
        // オーバーレイが作成済みかどうか
        if (dashboard.IsOverlayCreated)
        {
            // OpenVR のオーバーレイハンドル。OpenVR API を直接叩きたいときに使う
            ulong handle = dashboard.Handle;
        }

        // 表示幅は実行中に変えられる (すぐ反映される)
        dashboard.widthInMeters = 3.0f;
    }
}
メンバー内容
HandleOpenVR のオーバーレイハンドル。曲面にする、透明度を変えるなど、このコンポーネントが対応していない操作を OpenVR API で直接行うときに使います
IsOverlayCreatedオーバーレイの作成が済んでいるか。Start より前や、作成に失敗したときは false

実行中の動きかた

参考までに、再生中に内部で何をしているかの流れです。

  • 開始時 … OpenVR をオーバーレイアプリとして初期化(済みなら何もしない)→ ダッシュボードオーバーレイを作成 → サムネイルを設定 → レーザー入力の受け取りを設定
  • 毎フレーム … Render Texture の内容をオーバーレイに転送 → レーザーの移動やクリックを受け取って UI に流す
  • 終了時 … オーバーレイを破棄してから OpenVR を終了。順番はコンポーネント側で保証しているので気にしなくて大丈夫です

表示と非表示について、タブが選ばれているかどうかは SteamVR が管理します。スクリプトから表示状態を切り替えることはできません。