unityzgy/.svn/pristine/2e/2e6068089f5fdb4ab2ce4510c6128da14a62dae5.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

83 lines
4.0 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;
//Dictionary<string, string> anli1Dic = new Dictionary<string, string>() { { "三角木", "千斤顶" }, { "三角木", "制动螺栓" }, { "千斤顶", "车轮" }, { "千斤顶", "车轮螺栓组" }, { "制动螺栓", "车轮" }, { "制动螺栓", "车轮螺栓组" }, { "车轮螺栓组", "一体化装置" } };
//Dictionary<string, string> anli2Dic = new Dictionary<string, string>() { { "三角木", "千斤顶" }, { "三角木", "制动螺栓" }, { "千斤顶", "车轮" }, { "制动螺栓", "车轮" }, };
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);
StudentOperateRecorder.Instance.StartTiming();//场景加载完成 记录开始时间
equipPos = GameObject.Find("EquipPosAnchor").transform;
ProcessManager processManager = new ProcessManager();//初始化流程管理类
if (sceneInitData.caseName == "案例1")
{
processManager.InitStepRelationDic(anli1Dic, "一体化装置", "三角木");
}
else if (sceneInitData.caseName == "案例2")
{
processManager.InitStepRelationDic(anli2Dic, "车轮", "三角木");
}
else
{
Debug.LogError("未知的案例 无法规划流程");
}
GameObject equip= GameObject.Instantiate<GameObject>((GameObject)Resources.Load(ResourcesManager.GetPath($"ToRepaired_{sceneInitData.caseName}")));//加载与案例对应的待修装备模型
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 VRManager = new VRManager("VRTKSDKManager_Sub2", GameObjectManager.Instance.GetCarList()[0].transform.position + new Vector3(3, 0, 3));
VRManager.OpenVR(null);//场景加载完成后默认启用VR设备
if (GroupLearnHelper.isGroup)//分组训练时 初始化UDP相关逻辑
{
CreatSyncEnvironment();//
//SyncSceneAB syncScene = new SyncSceneAB();//绑定场景同步物体发送/处理逻辑
}
}
IEnumerator MoveCamera()
{
yield return new WaitForSeconds(0.2f);
CameraCtrl.Instance.LookAtTarget(equipPos);
}
//创建UDP同步环境 和VR人物姿态展示模型
private static void CreatSyncEnvironment()
{
SyncGOManager.CreateInstance();//创建场景同步管理器
NetUDPManager.Instance.InitUdp($"239.0.0.{GroupLearnHelper.groupNumber}", 8989, 8989, UDPType.Group);//创建UDP网络消息管理器并加入组播 组播端口默认为8989
GameObjectCreater.CreatSyncVRPerson(GroupLearnHelper.otherUser);//创建展示其他VR操作人员的物体
}
}