unityzgy/.svn/pristine/50/50c92756f8dbedc2609d9ec34eb36a4a0c6a8b28.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.9 KiB
Plaintext

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
//转运时间 显示计算类
public class TransportScoreCtrl : MonoBehaviour
{
public Slider setBestTime;
public Text showBestTime;
public Text showUseTime;
UnityAction<float> scoreChangedEvent;
float useTime;
// Start is called before the first frame update
void Awake()
{
setBestTime.minValue = 1;
setBestTime.maxValue = 60;
setBestTime.value = 10;//默认处于10分钟状态
setBestTime.wholeNumbers = true;
setBestTime.onValueChanged.AddListener(SliderValueChanged);
}
/// <summary>
/// 注入初始化数据 注册分数变化事件 返回初始得分
/// </summary>
/// <param name="time">秒数</param>
/// <param name="scoreChanged">分数变化事件</param>
/// <returns>分数 </returns>
public float InjectTimeGetScore(float time,UnityAction<float > scoreChanged )
{
useTime = time;
TimeSpan ts = TimeSpan.FromSeconds(time);
showUseTime.text = string.Format("转运耗时:{0}分:{1}秒",ts.Minutes,ts.Seconds);
scoreChangedEvent = scoreChanged;
return GetScore(setBestTime.value);
}
//计算 扣除分数
float GetScore(float bestTime)
{
float bestTimeSeconds = bestTime * 60; //设置的是分钟 改为秒
if (bestTime * 60 >= useTime)//未超过最佳时间 不扣分
return 0;
return 100 -100* bestTime / useTime; //超出时按照超出比例计算扣除分数 满分100
}
private void SliderValueChanged( float value )
{
showBestTime.text = $"{value}分钟";
scoreChangedEvent?.Invoke(GetScore(value));
}
private void OnDisable()
{
scoreChangedEvent = null;
setBestTime.value = 10;//默认处于10分钟状态
}
}