Unityで「タッチパッドに指が触れたイベント」を取得したいと思い、NativePluginでそのようなコードを書いています。
ひとまず、Unity C#側からDebug.Logの関数ポインタをPlugin側に送り、「タッチパッドに指が触れるとDebug.Log(1)」、「タッチパッドから指が離れるとDebug.Log(0)」のようなコードを書きました。タッチパッドに触れたイベントを取得できたという点では割とうまくいっているようです。
しかし、タイトルのように、UnityのWindowサイズを変更するとDebug.Logが走っています。つまり、例えば5回タッチパッドに触れて離してを繰り返したとして、リアルタイムではDebug.Logは走っていません。しかし、UnityのWindowサイズを変更するとDebug.Log(0)が5回、Debug.Log(1)が5回、というように今まで発行された命令がまとめて走っているような感じです。
そもそものPlugin側のコードに問題もある、というのもあるでしょうが、とりあえず結果から推測するに、「イベントはちゃんと走っているが、実行されるべき関数はどっかのQueueかなにかに保存されており、Windowサイズが変更されたタイミングで全部実行されている」ようです。
Update関数の中で何かしらの処理を書けば解決しそう、とボヤっと思っていますがいまいちわかりません。EditorWindow.Repaintや、EditorApplication.QueuePlayerLoopUpdateみたいなものでいけるのかなー、これらも試してみましたが駄目そうです。
これを解決する方法をご存じの方がいらっしゃれば教えてください。
また、Windowサイズが変更されたときはどのような通知が来るのか、などもご存じであれば教えていただきたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 06:38
2019/12/14 07:48 編集