unityzgy/.svn/pristine/67/67175f6a68bcecf5bd20d836b954c77608491cd4.svn-base
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

90 lines
2.4 KiB
Plaintext

//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: UIElement that responds to VR hands and generates UnityEvents
//
//=============================================================================
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using System;
namespace Valve.VR.InteractionSystem
{
//-------------------------------------------------------------------------
[RequireComponent( typeof( Interactable ) )]
public class UIElement : MonoBehaviour
{
public CustomEvents.UnityEventHand onHandClick;
private Hand currentHand;
//-------------------------------------------------
void Awake()
{
Button button = GetComponent<Button>();
if ( button )
{
button.onClick.AddListener( OnButtonClick );
}
}
//-------------------------------------------------
private void OnHandHoverBegin( Hand hand )
{
currentHand = hand;
InputModule.instance.HoverBegin( gameObject );
ControllerButtonHints.ShowButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger );
}
//-------------------------------------------------
private void OnHandHoverEnd( Hand hand )
{
InputModule.instance.HoverEnd( gameObject );
ControllerButtonHints.HideButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger );
currentHand = null;
}
//-------------------------------------------------
private void HandHoverUpdate( Hand hand )
{
if ( hand.GetStandardInteractionButtonDown() )
{
InputModule.instance.Submit( gameObject );
ControllerButtonHints.HideButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger );
}
}
//-------------------------------------------------
private void OnButtonClick()
{
onHandClick.Invoke( currentHand );
}
}
#if UNITY_EDITOR
//-------------------------------------------------------------------------
[UnityEditor.CustomEditor( typeof( UIElement ) )]
public class UIElementEditor : UnityEditor.Editor
{
//-------------------------------------------------
// Custom Inspector GUI allows us to click from within the UI
//-------------------------------------------------
public override void OnInspectorGUI()
{
DrawDefaultInspector();
UIElement uiElement = (UIElement)target;
if ( GUILayout.Button( "Click" ) )
{
InputModule.instance.Submit( uiElement.gameObject );
}
}
}
#endif
}