unityzgy/Assets/Scripts/UIScripts/Student/StudentWaitingPanel.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

158 lines
5.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XFramework;
public class StudentWaitingPanel : BasePanel
{
const string panelName = "Panel_studentWatingMain";
//提示字体
public Text text_Prompt;
public Text text_doing;
public Image image_loadingProgress;
public Button button_Exit;//退出登录
NetSubNameEnum subName;
//string sceneName;
string weatherName;
public StudentWaitingPanel() : base(new UIType(panelName))
{
}
protected override void InitEvent()
{
text_Prompt = ActivePanel.Find("Text").GetComponent<Text>();
text_doing = ActivePanel.FindChildTrans("Text_doing").GetComponent<Text>();
image_loadingProgress = ActivePanel.FindChildTrans("Image_value").GetComponent<Image>();
EventCenter.Instance.AddEventListener<NetSubNameEnum,object>("SubjectDown", SetSubjectMsg);
button_Exit = ActivePanel.FindChildTrans("Button_tuichu")?.GetComponent<Button>();
button_Exit.onClick.AddListener(ExitLogin);
button_Exit.interactable = true;//初始化时 允许退出登录
}
//携程更新AB包加载进度条
protected IEnumerator UpdateLoadProgress()
{
while (!AssetBundleHelper.sceneWebRequest.isDone)
{
if (AssetBundleHelper.sceneWebRequest.downloadProgress < 0.9f)
image_loadingProgress.fillAmount = AssetBundleHelper.sceneWebRequest.downloadProgress;
else
image_loadingProgress.fillAmount = 1.0f;
yield return null;
}
}
////接到场景科目时更新界面
//public override void Change(object newData)
//{
// RecordBase recordBase = newData as RecordBase;
// SetSubjectMsg(recordBase);
//}
///// <summary>
///// 场景加载时更新进度条
///// </summary>
///// <param name="newData"></param>
//public override void Change(float newData)
//{
// //Debug.Log(newData);
// image_loadingProgress.transform.parent.gameObject.SetActive(true);
// text_doing.text = "场景加载中,请稍后...";
// image_loadingProgress.fillAmount = newData;
// text_Prompt.text = "";
//}
object subMsg;//记录接到的科目信息
//接到科目消息
void SetSubjectMsg(NetSubNameEnum subName, object subMsg)
{
weatherName = "";
EventCenter.Instance.RemoveEnvetListener<NetSubNameEnum, object>("SubjectDown", SetSubjectMsg);//接到消息开始跳转时不再接收新消息 只至重新加载本界面
button_Exit.interactable = false;//接到消息后不允许退出
this.subName =subName;
this.subMsg = subMsg;
LocalizationManager.SetFormatted(text_Prompt, "当前科目为:{0}", LocalizationManager.DisplayName(subName.ToString()));
int state = 0;//学习状态
StudentOperateRecorder.Instance.SetSubName(subName);//记录科目初始化纪录类 便于结束时上传
switch (subName)
{
case NetSubNameEnum.:
NetSub1Msg netSub1 = subMsg as NetSub1Msg;
weatherName = netSub1.weather;
LoadABScene(netSub1.recordClass.TerrainName);
state = netSub1.state;
OnboardManager.Instance.onboardDic = netSub1.onboardGO;
GroupLearnHelper.GroupLearn = null;
break;
case NetSubNameEnum.: //以上科目需加载ab场景资源
NetSub2Msg netSub2 = subMsg as NetSub2Msg;
weatherName = netSub2.weather;
LoadABScene(netSub2.recordClass.TerrainName);
state = netSub2.state;
OnboardManager.Instance.onboardDic = netSub2.onboardGO;
GroupLearnHelper.GroupLearn = netSub2.groupLearn;
break;
case NetSubNameEnum.:
NetSub3Msg netSub3 = subMsg as NetSub3Msg;
//SceneSystem.Instance.sceneParameter = netSub3;
SceneSystem.Instance.SetScene(new StudentBuildInScene(netSub3));//进入内置场景
state = 2;//本科目只有考核状态
GroupLearnHelper.GroupLearn = netSub3.groupLearn;
break;
default:
break;
}
StudentStateManager.Instance.LearnState = (LearnState)state;
}
//加载AB包场景
private void LoadABScene(string sceneName)
{
image_loadingProgress.fillAmount = 0;
image_loadingProgress.transform.parent.gameObject.SetActive(true);
//this.sceneName = $"{sceneName}Scene";
Game.StartCoroutine(AssetBundleHelper.LoadSceneAB(StreamingAssetsManager.GetPath("山地"), LoadScene)); //测试修改
Game.StartCoroutine(UpdateLoadProgress());
text_doing.text = LocalizationManager.Get("资源加载中,请稍后...");
}
public override void OnStart()
{
base.OnStart();
text_Prompt.text = LocalizationManager.Get("等待教员选择科目...");
image_loadingProgress.transform.parent.gameObject.SetActive(false);
StudentStateManager.Instance.LearnState = LearnState.waiting;
}
//ab场景加载完成后自动执行
private void LoadScene()
{
SceneSystem.Instance.SetScene(new StudentABScene("山地", subName, subMsg,weatherName));
}
/// <summary>
/// 学员退出登录
/// </summary>
private void ExitLogin()
{
Pop();
Push(new LoginPanel());
User studentUser = new User();
studentUser.userType = UserType.student;
TCPManager.Instance.SendNetMsg<User>(studentUser, NetMsgName.StudentQuit);
}
}