unityzgy/Assets/ThirdPackages/VRPackage/VRTK/Examples/ExampleResources/Scripts/SceneChanger.cs
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

85 lines
3.0 KiB
C#

namespace VRTK.Examples.Utilities
{
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneChanger : MonoBehaviour
{
private bool canPress;
private VRTK_ControllerReference controllerReference;
private void Awake()
{
canPress = false;
Invoke("ResetPress", 1f);
DynamicGI.UpdateEnvironment();
}
private bool IsForwardPressed()
{
if (!VRTK_ControllerReference.IsValid(controllerReference))
{
return false;
}
if (canPress &&
VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference))
{
return true;
}
return false;
}
private bool IsBackPressed()
{
if (!VRTK_ControllerReference.IsValid(controllerReference))
{
return false;
}
if (canPress &&
VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, controllerReference) &&
VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.ButtonTwo, SDK_BaseController.ButtonPressTypes.Press, controllerReference))
{
return true;
}
return false;
}
private void ResetPress()
{
canPress = true;
}
private void Update()
{
GameObject rightHand = VRTK_DeviceFinder.GetControllerRightHand(true);
controllerReference = VRTK_ControllerReference.GetControllerReference(rightHand);
int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
int nextSceneIndex = currentSceneIndex;
if (IsForwardPressed() || Input.GetKeyUp(KeyCode.Space))
{
nextSceneIndex++;
if (nextSceneIndex >= SceneManager.sceneCountInBuildSettings)
nextSceneIndex = 0;
}
else if (IsBackPressed() || Input.GetKeyUp(KeyCode.Backspace))
{
nextSceneIndex--;
if (nextSceneIndex < 0)
nextSceneIndex = SceneManager.sceneCountInBuildSettings - 1;
}
if (nextSceneIndex == currentSceneIndex)
{
return;
}
SceneManager.LoadScene(nextSceneIndex);
}
}
}