ほかの作り方と比べる
SteamVR のオーバーレイを作る方法は、FloatSoda のほかに、Unity の uGUI で UI を作り、オーバーレイとして表示する方法と、OpenVR を直接呼ぶ方法があります。このページは、3つの作り方を同じ軸で並べ、FloatSoda にすると何が楽になり、何を引き受けるかを示します。比べる範囲は、リポジトリで確かめられる事実に限ります。ほかのオーバーレイ作成ツールとの比較は、確かめられる資料がないので載せていません。
比べる3つの作り方
Section titled “比べる3つの作り方”比べるのは、次の3つです。
- uGUI で UI を作る: Unity の uGUI で UI を作り、オーバーレイとして表示する方法。UI は Unity のシーンとプレハブで組む。
- OpenVR を直接呼ぶ: ウィジェットの層を使わず、
FloatSoda.OVRの API で、自分で用意した画像をオーバーレイに出す方法。 - FloatSoda: C# のコードで UI を宣言し、描画、レイアウト、入力、差分更新を任せる方法。
軸は、作る手間、変更の追いやすさと AI の書きやすさ、置き場所と入力、配る手間の4つです。自分が重く見る軸の節から読んでください。
FloatSoda は、レイアウト、描画、ポインタ入力、差分更新を肩代わりします。画面を作る人は、部品を入れ子にして書き、値を変えたいときは State の中で SetState を呼びます。数字とボタンの画面は、最初のオーバーレイを作るのコードの量で見積もれます。
OpenVR を直接呼ぶ方法では、ウィジェットの層がありません。samples/FloatSoda.Samples.PrimitiveOverlay は、PNG のファイルをテクスチャにしてオーバーレイを出しています。画像の描画、レイアウト、押された位置の判定は、自分で書きます。
uGUI で UI を作る方法の手間は、リポジトリに比べる材料がないので、ここでは書きません。
変更の追いやすさと、AI の書きやすさ
Section titled “変更の追いやすさと、AI の書きやすさ”FloatSoda の UI がすべて C# のコードであることは、FloatSoda とはで説明しています。
uGUI で UI を作る方法では、UI をシーンとプレハブの YAML と GUID の参照で持ちます。この形式は差分が読みにくく、AI が生成しにくい、というのが FloatSoda の想定する読み手の困りごとです。OpenVR を直接呼ぶ方法は、UI を持たないので、画面に当たる部分は自分の描画のコードになります。
自分の開発の形(1人、チーム、AI 任せ)と照らして、重い軸を選んでください。AI に書かせる手順は、AI に FloatSoda を書かせるで説明しています。
置き場所と入力
Section titled “置き場所と入力”FloatSoda は、ウィンドウの種類を選ぶだけで、置き場所が切り替わります。ダッシュボードなら DashboardWindow、ワールド座標に固定なら WorldSpaceWindow、デバイスに追従なら DeviceTrackedWindow です。
押す操作には制約があります。ポインタが届くのはダッシュボードのオーバーレイだけで、ワールド座標固定と追従の画面は表示専用です(追跡: #182)。OpenVR を直接呼ぶ方法では、イベントを自分で受け取るので、置き場所ごとの入力の扱いも自分で書きます。
制約の詳しい内容は、リファレンスのできないこと・まだ使えないものにあります。
FloatSoda で作ったアプリは .NET 上で動き、Unity のランタイムに依存しません。配り方は、exe にして配るで説明しています。動作環境は、リファレンスの動作環境にあります。
uGUI で UI を作る方法で配る手間との違いは、確かめられていないので書きません。
FloatSoda にして引き受けること
Section titled “FloatSoda にして引き受けること”FloatSoda を選ぶと、次の3つを引き受けます。
- Alpha の段階で API が予告なく変わるため、更新の前に CHANGELOG で変更内容を読むこと
- スクロールの部品(
ListView、GridView、SingleChildScrollView)が公開 API にない(追跡: #69) Buttonなどの UI コンポーネントがなく、ボタンはGestureDetectorで組み立てる(追跡: #102)
ほかの制約は、できないこと・まだ使えないものに集めています。引き受けられると判断したら、開発環境を用意するへ進んでください。