- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
117 lines
4.5 KiB
Plaintext
117 lines
4.5 KiB
Plaintext
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using XFramework;
|
|
using XFramework.NetOuter;
|
|
//内置场景 适用于维修科目
|
|
public class StudentBuildInScene : SceneState
|
|
{
|
|
NetSub3Msg sceneInitData;
|
|
VRManager VRManager;
|
|
bool enterVR;
|
|
|
|
//List<StepRelation> anli1Dic = new List<StepRelation>() { new StepRelation("三角木", "千斤顶"),new StepRelation("三角木", "制动螺栓"),new StepRelation("千斤顶", "车轮"),new StepRelation("千斤顶", "车轮螺栓组"),new StepRelation("制动螺栓", "车轮"),new StepRelation("制动螺栓", "车轮螺栓组"),new StepRelation("车轮螺栓组", "一体化装置") };
|
|
//List<StepRelation> anli2Dic = new List<StepRelation>() { new StepRelation("三角木", "千斤顶"), new StepRelation("三角木", "制动螺栓"), new StepRelation("千斤顶", "车轮") };
|
|
public StudentBuildInScene(NetSub3Msg netSub3Msg)
|
|
{
|
|
sceneName = "repairScene";
|
|
loadPanel = true;
|
|
async = true;
|
|
sceneInitData = netSub3Msg;
|
|
}
|
|
Transform equipPos;
|
|
protected override void SceneLoaded(Scene scene, LoadSceneMode mode)
|
|
{
|
|
base.SceneLoaded(scene, mode);
|
|
|
|
EnviroSkyMgr.instance.gameObject.SetActive(false);//本科目关闭天气系统
|
|
EventCenter.Instance.AddEventListener("UI_ReturnLoginScene", UIReturnButtonClick);
|
|
EventCenter.Instance.AddEventListener("ShutDownVR", ShutDownVR);
|
|
|
|
StudentOperateRecorder.Instance.StartTiming();//场景加载完成 记录开始时间
|
|
equipPos = GameObject.Find("EquipPosAnchor").transform;
|
|
|
|
//if (sceneInitData.caseName == "案例1")
|
|
//{
|
|
// ProcessManager.Instance.InitStepRelationDic(anli1Dic, "一体化装置", "三角木");
|
|
//}
|
|
//else if (sceneInitData.caseName == "案例2")
|
|
//{
|
|
// ProcessManager.Instance.InitStepRelationDic(anli2Dic, "车轮", "三角木");
|
|
//}
|
|
//else
|
|
//{
|
|
// Debug.LogError("未知的案例 无法规划流程");
|
|
//}
|
|
|
|
|
|
GameObject equip= ResourcesCreater.InstantiatePrefab($"ToRepaired_{sceneInitData.caseName}",false);//加载与案例对应的待修装备模型
|
|
equip.transform.position = equipPos.position;
|
|
equip.transform.rotation = equipPos.rotation;
|
|
//CameraCtrl.Instance.MoveWithRect = false;
|
|
//CameraCtrl.Instance.ChangeCamerPosSet(CameraPos.InRoom);
|
|
//Game.StartCoroutine(MoveCamera());
|
|
|
|
panelManager.Push(new StudentSub3Panel());
|
|
panelManager.ChangePanel(sceneInitData.fixLinks);
|
|
|
|
VRManager = new VRManager("VRTKSDKManager_Sub3", GameObject.Find("VRCameraPos").transform.position);
|
|
VRManager.OpenVR((p,e) => enterVR = p); ;//场景加载完成后默认启用VR设备
|
|
|
|
if (GroupLearnHelper.isGroup)//分组训练时 初始化UDP相关逻辑
|
|
{
|
|
CreatSyncEnvironment();//
|
|
//SyncSceneAB syncScene = new SyncSceneAB();//绑定场景同步物体发送/处理逻辑
|
|
}
|
|
}
|
|
|
|
|
|
public override void OnExit()
|
|
{
|
|
base.OnExit();
|
|
EnviroSkyMgr.instance.gameObject.SetActive(true);//科目结束时开启天气系统
|
|
EventCenter.Instance.RemoveEnvetListener("UI_ReturnLoginScene", UIReturnButtonClick);
|
|
EventCenter.Instance.RemoveEnvetListener("ShutDownVR", ShutDownVR);
|
|
|
|
ProcessManager.Instance.ClearProcess();
|
|
}
|
|
|
|
|
|
IEnumerator MoveCamera()
|
|
{
|
|
yield return new WaitForSeconds(0.2f);
|
|
CameraCtrl.Instance.LookAtTarget(equipPos);
|
|
}
|
|
|
|
//创建UDP同步环境 和VR人物姿态展示模型
|
|
private void CreatSyncEnvironment()
|
|
{
|
|
SyncGOManager.CreateInstance();//创建场景同步管理器
|
|
NetUDPManager.Instance.InitUdp($"239.0.0.{GroupLearnHelper.groupNumber}", 8989, 8989, UDPType.Group);//创建UDP网络消息管理器并加入组播 组播端口默认为8989
|
|
GameObjectCreater.CreatSyncVRPerson(GroupLearnHelper.otherUser);//创建展示其他VR操作人员的物体
|
|
}
|
|
|
|
//科目结束时断开连接
|
|
private void ShutDownVR()
|
|
{
|
|
VRManager.ShoutDwonVR(null);
|
|
}
|
|
|
|
//结束训练 并返回初始场景
|
|
private void UIReturnButtonClick()
|
|
{
|
|
if (enterVR)
|
|
{
|
|
VRManager.ShoutDwonVR((p) => ReturnLoginScene());
|
|
}
|
|
}
|
|
|
|
//返回等待场景
|
|
private void ReturnLoginScene()
|
|
{
|
|
//跳转到登陆场景
|
|
SceneSystem.Instance.SetScene(new StudentLoginScene(LoadSceneType.Login));
|
|
}
|
|
}
|