Appearance
DashboardCanvas
Canvas を SteamVR ダッシュボードのタブとして表示する、このプロジェクトの中心コンポーネントです。ウィザードで生成すると「名前 Dashboard Rig」のルートに付いています。
インスペクターの各プロパティ
オーバーレイ識別
Overlay Key
SteamVR がオーバーレイを区別するための ID です。SteamVR 全体で重複してはいけません。
空のままで大丈夫です。 空の場合は、プロジェクト名とオブジェクト名から自動で作られます。日本語の名前でも問題ないように、英数字だけに整形してから使います。
自分で入れたいときは、他のアプリと被らないように 会社名.アプリ名.画面名 のような形式にするのが安全です。使える長さには上限があるので、英数字とピリオドで短めに付けてください。
どういうときに自分で入れるのか
自動生成の Key にはオブジェクトの内部番号が混ざるため、実行のたびに変わることがあります。SteamVR の設定でオーバーレイごとの表示設定を保存したい場合など、毎回同じ ID であってほしいときは固定の Key を入れてください。
Overlay Name
ダッシュボード下部のタブにレーザーを当てたときに表示される名前です。こちらは自由な文字列で構いません。日本語も使えます。
描画ソース
Source Camera
画面を描画するカメラです。ウィザードで生成した場合は Overlay Camera が設定済みです。
未設定のまま再生した場合は、子オブジェクトからカメラを探して使います。
Render Texture
カメラの映像を書き込むテクスチャです。この内容が毎フレーム、ダッシュボードのオーバーレイに転送されます。
ウィザードで生成した場合は、Assets/DashboardCanvasGenerated に作られたテクスチャが設定済みです。
未設定のまま再生した場合は次の順で自動解決します。
- Source Camera に Target Texture が設定されていればそれを使う
- それも無ければ、下の 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
ダッシュボード下部のタブに表示されるアイコン画像です。
空のままだと自動生成の丸いアイコンになります。とりあえず動かす分にはこれで十分です。
自分の画像にしたいときは:
- Assets の中に StreamingAssets という名前のフォルダを作る
- そこに png か jpg を置く。サイズは 128 × 128 くらいが目安
- このプロパティにファイル名を入れる。例:
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;
}
}| メンバー | 内容 |
|---|---|
Handle | OpenVR のオーバーレイハンドル。曲面にする、透明度を変えるなど、このコンポーネントが対応していない操作を OpenVR API で直接行うときに使います |
IsOverlayCreated | オーバーレイの作成が済んでいるか。Start より前や、作成に失敗したときは false |
実行中の動きかた
参考までに、再生中に内部で何をしているかの流れです。
- 開始時 … OpenVR をオーバーレイアプリとして初期化(済みなら何もしない)→ ダッシュボードオーバーレイを作成 → サムネイルを設定 → レーザー入力の受け取りを設定
- 毎フレーム … Render Texture の内容をオーバーレイに転送 → レーザーの移動やクリックを受け取って UI に流す
- 終了時 … オーバーレイを破棄してから OpenVR を終了。順番はコンポーネント側で保証しているので気にしなくて大丈夫です
表示と非表示について、タブが選ばれているかどうかは SteamVR が管理します。スクリプトから表示状態を切り替えることはできません。