ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

OVRPlayerControllerを改造しようとしたけど…

今後に向け、OculusRift用カメラのコントローラーである
OVRPlayerControllerを自分用に改造することに。

直接SDKのファイルを弄るのは色々とアレなので、
てきとーな名前に変えたファイル・クラスで作成開始。

とりあえず、中身をほぼそのまま移して、
英語コメントを訳したり、コードが汚い部分を整理して、
他のファイルとの整合性を調整して、
PrefubのController部分を入れ替えて、実行すると…

BroadcastException: Broadcasting message "Sensor_Attached" but listeners have a different signature than the broadcaster.
OVRMessenger.Broadcast[Device,Boolean] (System.String eventType, Device arg1, Boolean arg2) (at Assets/OVR/Scripts/OVRMessenger.cs:293)
OVRDevice.Update () (at Assets/OVR/Scripts/OVRDevice.cs:288)

よく分からないエラー発生\(^o^)/


公式フォーラムに同じような質問を投げている人がいるけど、解決してない!/(^o^)\
https://developer.oculusvr.com/forums/viewtopic.php?t=1110&p=11959

とりあえず、色々と調べたみたけど…

  • Prefubの「OVRMain Menu」を無効化すると正常に動作する
  • 独自ファイルで書いていたコードを「OVRPlayerController.cs」にコピペして実行すると正常に動作(謎)
  • 原因は、OVRPlayerController.cs以外のクラス名(又はファイル名)を使ったこと…?
  • 一時的処置として、SDK内のファイルでOVRPlayerController型で宣言されているものは、今回実装した独自の型に変えている(ビルドは通るが、実行時にエラー)

…ぎぶあっぷ

↑にも書いた通り、SDK内のファイルに直で書いたら
問題なく通るので…しばらくは直書きで…
(定期的に実装したコードを保存しないと、SDKアップデート時に上書きされてしまいそう…)