using System.Collections; using System.Collections.Generic; using UnityEngine; using VRTK; public class HandHintController : MonoBehaviour { private static HandHintController _instance; public static HandHintController GetInstance() { if (!_instance) { _instance = (HandHintController)GameObject.FindObjectOfType(typeof(HandHintController)); if (!_instance) { Debug.LogError("场景中没有活跃的HandHintController"); } } return _instance; } public HandTooltipsManager rightHandTooltipsManager; public HandTooltipsManager leftHandTooltipsManager; private void Awake() { rightHandTooltipsManager.SetToolTips(false,false); leftHandTooltipsManager.SetToolTips(false,false); } public void UpdateToolTipsText(SDK_BaseController.ControllerHand _controllerHand, SDK_BaseController.ButtonTypes _buttonType,string info) { switch (_controllerHand) { case SDK_BaseController.ControllerHand.None: break; case SDK_BaseController.ControllerHand.Left: switch (_buttonType) { case SDK_BaseController.ButtonTypes.ButtonTwo: HandHintController.GetInstance().leftHandTooltipsManager.buttonTwoTooltip.UpdateText(info); break; case SDK_BaseController.ButtonTypes.Grip: HandHintController.GetInstance().leftHandTooltipsManager.gripTooltip.UpdateText(info); break; case SDK_BaseController.ButtonTypes.Trigger: HandHintController.GetInstance().leftHandTooltipsManager.triggerTooltip.UpdateText(info); break; case SDK_BaseController.ButtonTypes.Touchpad: HandHintController.GetInstance().leftHandTooltipsManager.touchPadTooltip.UpdateText(info); break; } break; case SDK_BaseController.ControllerHand.Right: switch (_buttonType) { case SDK_BaseController.ButtonTypes.ButtonTwo: HandHintController.GetInstance().rightHandTooltipsManager.buttonTwoTooltip.UpdateText(info); break; case SDK_BaseController.ButtonTypes.Grip: HandHintController.GetInstance().rightHandTooltipsManager.gripTooltip.UpdateText(info); break; case SDK_BaseController.ButtonTypes.Trigger: HandHintController.GetInstance().rightHandTooltipsManager.triggerTooltip.UpdateText(info); break; case SDK_BaseController.ButtonTypes.Touchpad: HandHintController.GetInstance().rightHandTooltipsManager.touchPadTooltip.UpdateText(info); break; } break; default: break; } } /// /// 打开手柄提示(对应按键) /// /// /// public void ShowHandHint(SDK_BaseController.ControllerHand _controllerHand, SDK_BaseController.ButtonTypes _buttonType) { switch (_controllerHand) { case SDK_BaseController.ControllerHand.Left: leftHandTooltipsManager.ShowToolTip(_buttonType); break; case SDK_BaseController.ControllerHand.Right: rightHandTooltipsManager.ShowToolTip(_buttonType); break; default: break; } } /// /// 关闭手柄提示(对应按键) /// /// /// public void CloseHandHint(SDK_BaseController.ControllerHand _controllerHand, SDK_BaseController.ButtonTypes _buttonType) { switch (_controllerHand) { case SDK_BaseController.ControllerHand.Left: leftHandTooltipsManager.CloseToolTip(_buttonType); break; case SDK_BaseController.ControllerHand.Right: rightHandTooltipsManager.CloseToolTip(_buttonType); break; default: break; } } /// /// 设置手柄提示状态 /// /// /// public void SetHandHint(SDK_BaseController.ControllerHand _controllerHand, bool state) { switch (_controllerHand) { case SDK_BaseController.ControllerHand.Left: leftHandTooltipsManager.SetToolTips(state,false); break; case SDK_BaseController.ControllerHand.Right: rightHandTooltipsManager.SetToolTips(state,false); break; default: break; } } /// /// 设置手柄提示状态 /// /// /// public void SetHandHint(SDK_BaseController.ControllerHand _controllerHand, bool state, bool flash) { switch (_controllerHand) { case SDK_BaseController.ControllerHand.Left: leftHandTooltipsManager.SetToolTips(state, flash); break; case SDK_BaseController.ControllerHand.Right: rightHandTooltipsManager.SetToolTips(state, flash); break; default: break; } } }