現在ブログ改修工事中です。恐らく多分きっとメイビーそのうちAstro製の既存デザインへと 変換しますので、見辛さは今暫くご容赦下さい。
この記事はその2 Resonite Advent Calendar 2023 - Adventarの12/12の記事 です。12/11はtonbyさんのアバターのクロスプラットフォーム管理法|tonby でした。
私はちまちまとResoniteのキーボードを0から(=既存のキーボードをベースに せず)自作しているのですが、そこで結構文章化されていないような小tipsが あったので共有したいと思います。本来は、自分の制作中のキーボードの使い 方等を解説しようと思っていたのですが、ドキュメントの整備にてこずってお り間に合わなさそうなのでまた次の機会に…
興味があれば、YouTubeの再生リストにある程度動画が載っているので覗いて みていただけると嬉しいです。「キーを押さずコントローラーの入力で操作出 来るキーボード」を作っています。
userspaceとは、Resoniteにおいて各プレイヤー個人個人が持つプライベート なワールドのようなものです。普通のワールドに重なる感じで存在する別レイ ヤーのようなものと捉えると良さそうです。多分。(というのも、公式のドキュ メントを知らないため…)
とはいっても大分身近なもので、dashやカメラ、キーボード等などのプライベー トUIがuserspaceに存在します。なので、キーボードを作成したい場合は切っ ても切れない存在になります。
普通のインスペクターではusespaceにあるものは表示されず、Protofluxやコ ンポーネントからもアクセスする事はできません(多分。もし知ってれば教え てください)。
そのため、開発時のデバッグがものすごくやりづらいです。というか、アイテ ムをインベントリに保存する前にデバッグ用のノードを追加しておき、毎度イ ンベントリに保存してキーボード入れ替えて出力を見てまた元のワールドで修 正してまたインベントリに保存して…という面倒な工程を繰り返す必要が出 てきます。
しかし実態は普段扱っているワールドと同じようにSlotとコンポーネントで構 成されているため、後述するLocal Inspectorを使うことで圧倒的に作業がし やすくなります。
UsespaceにもユーザーのSlotはあるのですが、ユーザーが個々人で着ているア バターとは異なりResoniteデフォルトのアバターが適用されています。そのた め、自分のアバターのSlot構造に依存する実装をしていると思った通りに動か なくて困ったことになります。
userspaceを見るためのインスペクターを作成することができます。これは一 般にlocal inspectorと呼ばれているようです。公式でもどこかにあるらしい と噂で聞きましたが見つけられなかったので、自作しましょう。簡単に作れま す。
仕組みとしては、「Inspectorをfacetとして取り込むことでuserspaceに出現 させる」という形になります。
facetに、「自分自身をInspectしているInspector」を含めればいいです。
注意点
最終的にInspectorがFacetの子から出られるようにする
Facetの子にいるInspectorは、Dashの中に取り込まれてしまい上手く操作出来
ません。なので、必ず RootSlot
(ないしDash以外のもの)
を親とするよう にしてください。
Inspectorが「Root」から表示していないようにする
Inspectorの右上にある上下の矢印のボタンを押すことで、左側のSlotの木の ルートを今Inspectしているものに切り替えることが出来ます。これを行って おかないと、userspaceに持ち込んだ際に参照先がないので上手く動かせません。
動画を作っているのですが、編集が今日中には終わりそうにありません…ま た出来たら追記します。
virtualKeyboardコンポーネントのみあれば良いようです。virtualKeyboardコ ンポーネントを付けても認識されない場合、VirtualKeybaordコンポーネント が付いているSlotが一番上に来ているかを確認してください。同じSlotに Grabbableをつけ忘れるなど、子Slotだけ保存されている事があります。
恐らく、UserspacePointerコンポーネントをもつSlotと接触すると発火するよ
うです。これは、
Root/UserRoot/VR_Globe_Right/Tooltip Anchor/Tooltip
Root/Tooltip Holder/UserspaceTip
が所持しています。
作成したキーボードがシンクされる前に「キーボードとして使う」を押してし まってる可能性があります。 必ずシンクが終わってから「キーボードとして 使う」を押してください 。
注意点として、シンクが完了する前に一度でも「キーボードとして使う」を押 してしまっていると、シンクが終わった後に再度押しても効かなくなるようで す。(n敗)