// 非表示にしたハンドオブジェクトを表示する private void _dispHandObject() { // 無効にしたコンポーネントを戻す foreach (var trans in m_handObjList) { var behaviours = trans.GetComponents <MonoBehaviour>(); var ren = trans.GetComponent <Renderer>(); var txt = trans.GetComponent <Text>(); var gmv = behaviours.FirstOrDefault(c => c.GetType().Name.Contains("GripMoveController")); var mnu = behaviours.FirstOrDefault(c => c.GetType().Name.Contains("MenuTool")); var vrm = behaviours.FirstOrDefault(c => c.GetType().Name.Contains("VRMenuController")); if (ren) { ren.enabled = true; } if (txt) { txt.enabled = true; } if (gmv) { gmv.enabled = true; } if (mnu) { mnu.enabled = true; } if (vrm) { vrm.enabled = true; } } m_handObjList.Clear(); // レイヤーを元に戻す foreach (var pair in m_grabDic) { pair.Key.gameObject.layer = pair.Value; } m_grabDic.Clear(); // 無効にしたControllerBehaviorを戻すが、シーンが変わって現在のControllerBehaviorが // 変わっている場合があるので同じか調べてから戻す if (m_ctrlBehNowFI != null && m_ctrlBehNow != null) { AVRControllerBehavior ctrlBeh = (AVRControllerBehavior)m_ctrlBehNowFI.GetValue(m_thisController); if (ctrlBeh && !ctrlBeh.enabled && ctrlBeh == m_ctrlBehNow) { ctrlBeh.enabled = true; } m_ctrlBehNow = null; } // COMの夜伽コマンドメニューを隠していたら戻す _showYotogiCommandMenu(); }
// ハンドオブジェクトを非表示にする private void _hideHandObject() { // ViveCameraRig(Clone)/Controller (left)/ の下にある // HandCamera HandItem HandPlayer UI を消したい // HandCamera HandItem HandPlayer UI は自分の兄弟のはず… var transAry = transform.parent.GetComponentsInChildren <Transform>(false); foreach (var trans in transAry) { var behaviours = trans.GetComponents <MonoBehaviour>(); // レンダラーとテキストを無効にする // GripMoveやVRMenuの移動や回転が不用意に動いてしまわない様にこれらも無効にする var ren = trans.GetComponent <Renderer>(); var txt = trans.GetComponent <Text>(); var gmv = behaviours.FirstOrDefault(c => c.GetType().Name.Contains("GripMoveController")); var mnu = behaviours.FirstOrDefault(c => c.GetType().Name.Contains("MenuTool")); var vrm = behaviours.FirstOrDefault(c => c.GetType().Name.Contains("VRMenuController")); if (ren) { ren.enabled = false; } if (txt) { txt.enabled = false; } if (gmv) { gmv.enabled = false; } if (mnu) { mnu.enabled = false; } if (vrm) { vrm.enabled = false; } // 無効にしたオブジェクトを記憶しておく if (ren || txt || gmv || mnu || vrm) { m_handObjList.Add(trans); } // タッチや掴み用のオブジェクトはレイヤーを変えて反応しない様にしておく if (trans.gameObject.layer == HAND_LAYER || trans.gameObject.layer == GRAB_LAYER) { m_grabDic.Add(trans, trans.gameObject.layer); trans.gameObject.layer = IGNORE_LAYER; } } // メニューボタンに反応してしまわない様に現在のControllerBehaviorが有効な場合のみ無効にする if (m_ctrlBehNowFI != null) { AVRControllerBehavior ctrlBeh = (AVRControllerBehavior)m_ctrlBehNowFI.GetValue(m_thisController); if (ctrlBeh && ctrlBeh.enabled) { ctrlBeh.enabled = false; m_ctrlBehNow = ctrlBeh; } } // COMの夜伽コマンドメニューを隠す _hideYotogiCommandMenu(); }