コンテンツにスキップ

ほかの作り方と比べる

SteamVR のオーバーレイを作る方法は、FloatSoda のほかに、Unity の uGUI で UI を作り、オーバーレイとして表示する方法と、OpenVR を直接呼ぶ方法があります。このページは、3つの作り方を同じ軸で並べ、FloatSoda にすると何が楽になり、何を引き受けるかを示します。比べる範囲は、リポジトリで確かめられる事実に限ります。ほかのオーバーレイ作成ツールとの比較は、確かめられる資料がないので載せていません。

比べるのは、次の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 を書かせるで説明しています。

FloatSoda は、ウィンドウの種類を選ぶだけで、置き場所が切り替わります。ダッシュボードなら DashboardWindow、ワールド座標に固定なら WorldSpaceWindow、デバイスに追従なら DeviceTrackedWindow です。

押す操作には制約があります。ポインタが届くのはダッシュボードのオーバーレイだけで、ワールド座標固定と追従の画面は表示専用です(追跡: #182)。OpenVR を直接呼ぶ方法では、イベントを自分で受け取るので、置き場所ごとの入力の扱いも自分で書きます。

制約の詳しい内容は、リファレンスのできないこと・まだ使えないものにあります。

FloatSoda で作ったアプリは .NET 上で動き、Unity のランタイムに依存しません。配り方は、exe にして配るで説明しています。動作環境は、リファレンスの動作環境にあります。

uGUI で UI を作る方法で配る手間との違いは、確かめられていないので書きません。

FloatSoda を選ぶと、次の3つを引き受けます。

  • Alpha の段階で API が予告なく変わるため、更新の前に CHANGELOG で変更内容を読むこと
  • スクロールの部品(ListView、GridView、SingleChildScrollView)が公開 API にない(追跡: #69)
  • Button などの UI コンポーネントがなく、ボタンは GestureDetector で組み立てる(追跡: #102)

ほかの制約は、できないこと・まだ使えないものに集めています。引き受けられると判断したら、開発環境を用意するへ進んでください。