ビギナーが書いた記事なので突っ込みがあれば凄くほしいです。
UWP系APIのコールバックからUnityのオブジェクトを操作したり、UnityのUpdateメソッドとかからUWPのUIスレッド上で呼び出されるのを前提としたAPIは呼び出せないという問題があります。
最初はこちらのサイトにあるように
UnityPlayerの中のAppCallbacksクラスを使って解決しようとしました。
出来なかったこと
BehaviorからUnityPlayer名前空間を使おうとすると、そんなの参照されてるアセンブリにないということでエラーになりました。
Assembly-CSharp(Universal Windows)のプロジェクトに手動でUnityPlayer.winmdを参照追加するとビルドできるようになったのですが、今度は、そのコードを含んだプロジェクトに対してUnityからVisual Studioのプロジェクトをビルドして吐き出すときにUnityPlayerがないよってエラーになりました。
解決策
AppCallbacksクラスを使うのではなくUnityEngine.WSA.Application
クラスを使うことにしました。
このクラスにはInvokeOnAppThread
(Unityのスレッドに切り替える)メソッドとInvokeOnUIThread
(UWPのUIスレッドに切り替える)というメソッドがあります。
こいつを使って切り替えができたっぽいです。
めでたしめでたし。