unityzgy/.svn/pristine/4f/4f7e8d0d6157157801b13c97e6821a501cb39ac6.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

65 lines
1.7 KiB
Plaintext

//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Animation that moves based on a linear mapping
//
//=============================================================================
using UnityEngine;
using System.Collections;
namespace Valve.VR.InteractionSystem
{
//-------------------------------------------------------------------------
public class LinearAnimation : MonoBehaviour
{
public LinearMapping linearMapping;
public new Animation animation;
private AnimationState animState;
private float animLength;
private float lastValue;
//-------------------------------------------------
void Awake()
{
if ( animation == null )
{
animation = GetComponent<Animation>();
}
if ( linearMapping == null )
{
linearMapping = GetComponent<LinearMapping>();
}
//We're assuming the animation has a single clip, and that's the one we're
//going to scrub with the linear mapping.
animation.playAutomatically = true;
animState = animation[animation.clip.name];
//If the anim state's (i.e. clip's) wrap mode is Once (the default) or ClampForever,
//Unity will automatically stop playing the anim, regardless of subsequent changes
//to animState.time. Thus, we set the wrap mode to PingPong.
animState.wrapMode = WrapMode.PingPong;
animState.speed = 0;
animLength = animState.length;
}
//-------------------------------------------------
void Update()
{
float value = linearMapping.value;
//No need to set the anim if our value hasn't changed.
if ( value != lastValue )
{
animState.time = value / animLength;
}
lastValue = value;
}
}
}