これの続きです。やっと入力できました。
Oculus GOでGUI
こちらの記事のおかげで、OculusGoでマイキロソフトのキーボード入力ができました。
ずっとoculusGoでのuGUIのボタン入力の仕方がわからず、MRTKとか使って迷走していました。
やり方
Oculus/VR/Scenes/UIシーンのOVR GazePointerをプレハブ化して使えるようにします。
これのRay transformを右手のコントローラーにします。すると右手からポインターが出ます。これを頭にすると、頭の動きで選択する形になります。
そしてCanvasを作り、こんな感じにします。
Graphic Raycasterを消して、OVRRaycasterを代わりにつけ、Blocking ObjectsをAllにするそうです。
また、EventSystemにからStandalone Input Moduleを消し、OVR InputModuleを付けます。ここのRay TransformもRightHandAnchorにしました。(よくわかってない)
読まなくていいよ
以前コントローラーのポインター機能のために付けていた、VRsampleのVRCameraUIのGUIReticleもアンカーを出すのでいらないので消した。
入力フィールドをあーだこーだ
手前遠くで二つのキーボードを表示して、入力のしやすさを比較したかったけど、入力した文字が手前のフィールドにしか表示されない。
どうしたらいいかよくわからなかったので、手前のキーボードのみにして、ボタンで大きさと位置を変化できるようにしようと思った。
しかしkeyboardはCanvasで普通のゲームオブジェクトのようにスクリプトから大きさや位置を変化させれなかった。
RectTransformは何者なの?
Vector3 big = keyboard_big.gameObject.transform.position;
Vector3 min = keyboard_min.gameObject.transform.position;
Vector3 the = ha.gameObject.transform.position;
void Update(){
if (Input.GetKeyDown(KeyCode.DownArrow))/////エディタ用
{
the = new Vector3(min.x, min.y, min.z);
Debug.Log("sita");
}
if (Input.GetKeyDown(KeyCode.UpArrow))
{
the = new Vector3(big.x, big.y, big.z);
Debug.Log("ue");
}
}
こんな感じのスクリプトではだめだった・・・
そもそもこれ普通のゲームオブジェクトでも動かなかったからスクリプトが間違っている気がする。
そもそもキーボードを押して入力したテキストをフィールドに表示する部分がどうなっているのかがわからない。
ボタンについているスクリプトに
m_Text = gameObject.GetComponentInChildren<Text>();
m_Text.text = Value;
というコードがあった。
自分で作ったTextにテキストを入れてもらうためには
m_Text= GameObject.Find("Inputhand").GetComponent<Text>();
でFindでテキストをゲットできる。
だが、これだと「?」って撃ち込まれた。?ってなんだよ!どっからきたんだよ!って感じ・・・
結局キーボードのInpurtFieldに貼ってある
Slider Input FieldのTextComponentに自分で作ったテキストを埋め込めばできた。
Rich Textは外しておく
なんで勝手に積み重ねられていくんだろう?カーソルのピカピカも出るし・・・どこでそのスクリプト書いてるんだろう?
普通にやってたら上書きされない?bの上にc
なんでbcと表示される?
最後に
私のような素人はアセットの構造を理解するのに50年かかるので研究は無理です。
と思ったらキーボードアセットを解説しているサイトがあった!
/Knowledge/Programming/Unity/MRTK.UX.Keyboard メモ
これを見てもわからない