方法
UdonでVRChatのメニューは本来取れませんが、クイックメニューなどのUIにはレイが当たるようにするためのコライダーがあり、Physics.OverlapSphereなどのレイキャスト系のメソッドで取得できます。
ただし、IsValidでfalseになり、それ自体のデータは取ることができず、「そこにある」ということだけわかります。
それで取得したコライダーの数でメニューが表示されていることがわかります。
注意
この方法は2022/11/25時点での方法です。
この方法はVRChatのアップデートで利用できなくなる可能性があります。
コード
int intUI;
VRCPlayerApi localPlayer;
private void Start()
{
localPlayer = Networking.LocalPlayer;
}
private void LateUpdate()
{
intUI = Physics.OverlapSphere(localPlayer.GetPosition(), 10F, 524288).Length;
if (intUI == 11 || intUI == 12 || intUI == 13 || intUI == 14 || intUI == 15 || intUI == 16 || intUI == 17)
{
// クイックメニューが表示されている
Debug.Log("クイックメニューが表示されています。");
}
else if (intUI == 8 || intUI == 9 || intUI == 18 || intUI == 19 || intUI == 20)
{
// メインメニューが表示されている
Debug.Log("メインメニューが表示されています。");
}
}