- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
65 lines
1.9 KiB
Plaintext
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分钟状态
|
|
}
|
|
}
|