using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows.Forms; using TMPro; using UnityEditor; using UnityEngine; using UnityEngine.UI; public class buttonFunctionAdd : MonoBehaviour { public static buttonFunctionAdd Instance; /// /// UI组 /// public List allButton; /// /// 图片未选中 /// public List UnSelcet; /// /// 图片选中 /// public List Selected; /// /// 展示UI /// public GameObject 展示; /// /// IDE面板 /// public GameObject IDE面板; /// /// IDE未设置面板 /// public GameObject IDE未设置; /// /// 项目目录设置面板 /// public GameObject 项目目录; /// /// 开始按钮的打开exe的脚本 /// public IDEsettingPanel 开始项目; /// /// 现在选择的模式 /// public clean 目前模式; /// /// 原初始菜单的脚本 /// public MainCanvasManager allFunction; /// /// 左侧UI中的开始按钮 /// public UnityEngine.UI.Button 左侧_startButton; /// /// 左侧切换按钮 /// public UnityEngine.UI.Button Button_切换; /// /// 提交实验按钮 /// public UnityEngine.UI.Button Button_提交实验; /// /// 原来功能脚本 /// public MenuPanel OldFunction; /// /// 新脚本功能 /// public MenuPanel newFunction; /// /// 退出按钮 /// public UnityEngine.UI.Button Button_退出; /// /// 退出菜单 /// public GameObject 退出菜单; /// /// 退出菜单 /// public GameObject 退出场景菜单; /// /// 取消按钮 /// public UnityEngine.UI.Button Button_取消; /// /// 确认重置菜单 /// public GameObject 确认重置菜单; /// /// 确认暂存代码到云端菜单 /// public GameObject 确认暂存代码到云端菜单; /// /// 确认读取云端代码菜单 /// public GameObject 确认读取云端代码菜单; /// /// 重置按钮 /// public UnityEngine.UI.Button Button_重置; /// /// 录制UI /// public UnityEngine.UI.Button Button_录制结束; /// /// 暂存 /// public UnityEngine.UI.Button Button_暂存; /// /// 读取 /// public UnityEngine.UI.Button Button_读取; /// /// 进程变量 /// public Process pro; /// /// 设置路径按钮 /// public UnityEngine.UI.Button Button_设置路径; /// /// 小窗口的切换按钮 /// public UnityEngine.UI.Button Button_小窗口切换; //当前Unity程序进程 private static IntPtr currentWindow; public WindowsTools winTool = new WindowsTools(); /// /// 退出功能额外添加关闭各种服务 /// public UnityEngine.UI.Button Button_退出确认; /// /// 暂存取消UI显示按钮 /// public GameObject 暂存取消UI显示按钮; /// /// API文档菜单 /// public GameObject API文档菜单; /// /// 任务列表 /// public GameObject taskDetail; /// /// 确认提交按钮 /// public UnityEngine.UI.Button 确认提交按钮; /// /// 确认提交菜单 /// public GameObject 确认提交菜单; /// /// deepseek窗口 /// public GameObject deepseek窗口; // Start is called before the first frame update void Start() { Instance = this; //新添加得自由模式任务文档置灰功能 if (GameManager.current_main_menu_type == MainMenuType.自由编程) { allButton[0].GetComponent().enabled = false; allButton[0].GetComponent().color = new Vector4(1f, 1f, 1f, 100f / 255f); allButton[6].GetComponent().enabled = false; allButton[6].GetComponent().color = new Vector4(1f, 1f, 1f, 100f / 255f); } for (int n = 0; n < allButton.Count; n++) { //直接用n作为参数会导致添加得方法得n出现问题,不知道为啥,改用switch来代替使用 //动态添加带参数得方法 //allButton[n].GetComponent().onClick.AddListener(delegate() { this.ChangePicture(n); }); switch (n) { case 0: allButton[0].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(0); }); allButton[0].GetComponent().onClick.AddListener(seset_); allButton[0].GetComponent().onClick.AddListener(Function_总览); break; case 1: allButton[1].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(1); }); allButton[1].GetComponent().onClick.AddListener(seset_); allButton[1].GetComponent().onClick.AddListener(Function_IDE设置); break; case 2: allButton[2].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(2); }); allButton[2].GetComponent().onClick.AddListener(seset_); allButton[2].GetComponent().onClick.AddListener(Function_打开重置菜单); break; case 3: allButton[3].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(3); }); allButton[3].GetComponent().onClick.AddListener(seset_); allButton[3].GetComponent().onClick.AddListener(Function_开始录屏); break; case 4: allButton[4].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(4); }); allButton[4].GetComponent().onClick.AddListener(seset_); allButton[4].GetComponent().onClick.AddListener(Function_确认暂存代码到云端菜单); break; case 5: allButton[5].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(5); }); allButton[5].GetComponent().onClick.AddListener(seset_); allButton[5].GetComponent().onClick.AddListener(Function_确认读取云端代码菜单); break; case 6: allButton[6].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(6); }); allButton[6].GetComponent().onClick.AddListener(seset_); allButton[6].GetComponent().onClick.AddListener(Function_API文档); break; case 7: allButton[7].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(7); }); allButton[7].GetComponent().onClick.AddListener(seset_); allButton[7].GetComponent().onClick.AddListener(Function_确认提交云端代码菜单); break; case 8: allButton[8].GetComponent().onClick.AddListener(delegate () { this.ChangePicture(8); }); allButton[8].GetComponent().onClick.AddListener(seset_); allButton[8].GetComponent().onClick.AddListener(Function_打开deepseek窗口); break; } } 左侧_startButton.onClick.AddListener(Function_开始实验); Button_切换.onClick.AddListener(Function_切换); 确认提交按钮.onClick.AddListener(Function_提交); Button_退出.onClick.AddListener(() => { 退出场景菜单.SetActive(true); UnityEngine.Debug.Log(退出场景菜单.transform.GetChild(1).name); 退出场景菜单.transform.GetChild(1).GetComponent().text = "是否退出当前场景"; }); Button_取消.onClick.AddListener(() => { 退出菜单.SetActive(false); }); Button_重置.onClick.AddListener(Function_重置); //添加录制结束功能 Button_录制结束.onClick.AddListener(Function_结束录屏); Button_录制结束.transform.GetChild(0).GetComponent().onClick.AddListener(Function_结束录屏); Button_读取.onClick.AddListener(Function_读取); Button_暂存.onClick.AddListener(Function_暂存); Button_小窗口切换.onClick.AddListener(Function_切换max); Button_退出确认.onClick.AddListener(开始项目.kill); 暂存取消UI显示按钮.GetComponent().onClick.AddListener(disappear); Invoke("delayOpen", 0.1f); delayOpen(); } public void disappear() { 暂存取消UI显示按钮.transform.parent.gameObject.SetActive(false); } void delayOpen() { if (GameManager.current_main_menu_type == MainMenuType.课程任务) { Button_退出.gameObject.SetActive(false); } } // Update is called once per frame void Update() { if (GameManager.current_main_menu_type == MainMenuType.课程任务) { button_open(); } } private void button_open() { if (WebSocketServerManager.Instance.number != 0) { UnityEngine.Debug.Log(WebSocketServerManager.Instance.number + "1234"); allButton[4].GetComponent().enabled = false; allButton[4].GetComponent().color = new Color(1f, 1f, 1f, 100f / 255f); allButton[5].GetComponent().enabled = false; allButton[5].GetComponent().color = new Color(1f, 1f, 1f, 100f / 255f); allButton[7].GetComponent().enabled = false; allButton[7].GetComponent().color = new Color(1f, 1f, 1f, 100f / 255f); } else { allButton[4].GetComponent().enabled = true; allButton[4].GetComponent().color = new Color(1f, 1f, 1f, 1f); allButton[5].GetComponent().enabled = true; allButton[5].GetComponent().color = new Color(1f, 1f, 1f, 1f); allButton[7].GetComponent().enabled = true; allButton[7].GetComponent().color = new Color(1f, 1f, 1f, 1f); } } public void Function_API文档() { if (allButton[6].GetComponent().sprite != UnSelcet[6]) { API文档菜单.SetActive(true); } else { API文档菜单.SetActive(false); } } public void IDE中开始按钮Function() { ChangePicture(1); seset_(); Function_IDE设置(); currentWindow = WindowsTools.GetForegroundWindow(); if (GameManager.current_main_menu_type == MainMenuType.课程任务) { Button_提交实验.gameObject.SetActive(true); allButton[4].GetComponent().enabled = true; allButton[4].GetComponent().color = new Color(1f, 1f, 1f, 1f); allButton[5].GetComponent().enabled = true; allButton[5].GetComponent().color = new Color(1f, 1f, 1f, 1f); } //启用按钮 allButton[2].GetComponent().enabled = true; allButton[2].GetComponent().color = new Color(1f, 1f, 1f, 1f); allButton[3].GetComponent().enabled = true; allButton[3].GetComponent().color = new Color(1f, 1f, 1f, 1f); // 缩小视角 allFunction.OnMiniMode(); winTool.right(currentWindow); // start_roll(); //切换UI 左侧_startButton.gameObject.SetActive(false); Button_切换.gameObject.SetActive(true); } public void ChangePicture(int M) { if (!allButton[M].GetComponent().selected) { for (int n = 0; n < UnSelcet.Count; n++) { allButton[n].GetComponent().sprite = UnSelcet[n]; allButton[n].GetComponent().selected = false; } allButton[M].GetComponent().sprite = Selected[M]; allButton[M].GetComponent().selected = true; } else { for (int n = 0; n < UnSelcet.Count; n++) { allButton[n].GetComponent().sprite = UnSelcet[n]; allButton[n].GetComponent().selected = false; } } } void ChangePicture_(int M) { UnityEngine.Debug.Log("你好"); for (int n = 0; n < UnSelcet.Count; n++) { allButton[n].GetComponent().sprite = UnSelcet[n]; if (n != 6 && n != 7) { allButton[n].GetComponent().selected = false; } } allButton[M].GetComponent().sprite = Selected[M]; allButton[M].GetComponent().selected = true; } void Function_总览() { if (allButton[0].GetComponent().sprite != UnSelcet[0]) { 展示.SetActive(true); } else { 展示.SetActive(false); } } public void seset_() { 展示.SetActive(false); IDE面板.SetActive(false); IDE未设置.SetActive(false); 确认重置菜单.SetActive(false); 确认暂存代码到云端菜单.SetActive(false); 确认读取云端代码菜单.SetActive(false); 项目目录.SetActive(false); API文档菜单.SetActive(false); 确认提交菜单.SetActive(false); deepseek窗口.SetActive(false); } void Function_IDE设置() { UnityEngine.Debug.Log("点击了IDE设置"); if (allButton[1].GetComponent().sprite != UnSelcet[1]) { IDE面板.SetActive(true); UnityEngine.Debug.Log("打开IDE面板"); } else { IDE面板.SetActive(false); IDE未设置.SetActive(false); 项目目录.SetActive(false); UnityEngine.Debug.Log("关闭IDE面板"); } } void Function_开始实验() { currentWindow = WindowsTools.GetForegroundWindow(); //暂时禁用掉 if (GameManager.current_main_menu_type == MainMenuType.课程任务) { Button_提交实验.gameObject.SetActive(true); allButton[4].GetComponent().enabled = true; allButton[4].GetComponent().color = new Color(1f, 1f, 1f, 1f); allButton[5].GetComponent().enabled = true; allButton[5].GetComponent().color = new Color(1f, 1f, 1f, 1f); } //启用按钮 allButton[2].GetComponent().enabled = true; allButton[2].GetComponent().color = new Color(1f, 1f, 1f, 1f); allButton[3].GetComponent().enabled = true; allButton[3].GetComponent().color = new Color(1f, 1f, 1f, 1f); //缩小主视角 allFunction.OnMiniMode(); winTool.right(currentWindow); //这里用来启用外部.exe start_roll(); //切换UI 左侧_startButton.gameObject.SetActive(false); Button_切换.gameObject.SetActive(true); if (目前模式.nowChoose == "Python") 开始项目.RunPython(); if (目前模式.nowChoose == "Java") 开始项目.RunJava(); if (目前模式.nowChoose == "C") 开始项目.RunC(); } public void Function_打开重置菜单() { if (allButton[2].GetComponent().sprite != UnSelcet[2]) { 确认重置菜单.SetActive(true); } else { 确认重置菜单.SetActive(false); } } public void Function_确认暂存代码到云端菜单() { if (allButton[4].GetComponent().sprite != UnSelcet[4]) { 确认暂存代码到云端菜单.SetActive(true); } else { 确认暂存代码到云端菜单.SetActive(false); } } public void Function_确认读取云端代码菜单() { if (allButton[5].GetComponent().sprite != UnSelcet[5]) { 确认读取云端代码菜单.SetActive(true); } else { 确认读取云端代码菜单.SetActive(false); } } public void Function_确认提交云端代码菜单() { if (allButton[7].GetComponent().sprite != UnSelcet[7]) { 确认提交菜单.SetActive(true); } else { 确认提交菜单.SetActive(false); } } public void Function_打开deepseek窗口() { if (allButton[8].GetComponent().sprite != UnSelcet[8]) { deepseek窗口.SetActive(true); } else { deepseek窗口.SetActive(false); } } void Function_开始录屏() { this.gameObject.SetActive(false); Button_录制结束.gameObject.SetActive(true); newFunction.StartVideoRecord(); } void Function_结束录屏() { //UnityEngine.Debug.Log("whatfuck"); this.gameObject.SetActive(true); Button_录制结束.gameObject.SetActive(false); newFunction.StopVideoRecord(); } //切换最小窗口 public void Function_切换() { start_roll(); //缩小主视角 allFunction.OnMiniMode(); winTool.right(currentWindow); } //切换最大窗口 public void Function_切换max() { //currentWindow = WindowsTools.GetForegroundWindow(); end_roll(); allFunction.OnMax(); winTool.old(currentWindow); } void Function_暂存() { buttonFunctionAdd.Instance.开始项目.kill(); 确认暂存代码到云端菜单.SetActive(false); OldFunction.OnStaging("暂存"); for (int n = 0; n < UnSelcet.Count; n++) { allButton[n].GetComponent().sprite = UnSelcet[n]; } allButton[4].GetComponent().selected = false; } void Function_读取() { 确认读取云端代码菜单.SetActive(false); OldFunction.OnDownload(); for (int n = 0; n < UnSelcet.Count; n++) { allButton[n].GetComponent().sprite = UnSelcet[n]; } allButton[5].GetComponent().selected = false; } void Function_提交() { 确认提交菜单.SetActive(false); OldFunction.OnSubmit(); for (int n = 0; n < UnSelcet.Count; n++) { allButton[n].GetComponent().sprite = UnSelcet[n]; } allButton[7].GetComponent().selected = false; } public void Function_重置() { 确认重置菜单.SetActive(false); OldFunction.OnResetScene(); for (int n = 0; n < UnSelcet.Count; n++) { allButton[n].GetComponent().sprite = UnSelcet[n]; } allButton[2].GetComponent().selected = false; } void start_roll() { if (GameManager.current_main_menu_type == MainMenuType.课程任务) { string _taskDetail=""; if (taskDetail.transform.childCount > 0) for (int n = 0; n < taskDetail.transform.childCount; n++) { _taskDetail +="&&"+taskDetail.transform.GetChild(n).GetChild(0).GetChild(0).GetComponent().text; //UnityEngine.Debug.Log(taskDetail.transform.GetChild(n).GetChild(0).GetChild(0).GetComponent().text); //UnityEngine.Debug.Log(taskDetail.transform.GetChild(n).GetChild(0).GetChild(0).GetComponent().text); } GameObject.Find("SceneManager").GetComponent().StartProcess("WithSubmitButton"+","+"taskdetail:"+ _taskDetail); /* UnityEngine.Debug.Log("WithSubmitButton" + "," + "taskdetail:" + _taskDetail);*/ // ConsolePanel.ConsoleOutput("WithSubmitButton" + "," + "taskdetail:" + _taskDetail); // ConsolePanel.ConsoleOutput("任务模式启动"); } else { GameObject.Find("SceneManager").GetComponent().StartProcess("WithOutSubmitButton"); //ConsolePanel.ConsoleOutput("非任务模式启动"); } } void end_roll() { GameObject.Find("SceneManager").GetComponent().KillProcess(); } private void OnApplicationQuit() { 开始项目.kill(); } private void OnDisable() { seset_(); } }