using System.Collections; using System.Collections.Generic; using UnityEngine; using SK.Framework; /// /// 操作流程 /// public class EquipmentProcessExample_TSQ : MonoSingleton { public TaskData EquipmentProcess_Task; /// /// 当前期望输入的 Step 索引(0-based) /// 仅用于示例判断“是否按对”,不控制流程 /// public int _expectStepIndex = 1; public void Start() { //gameObject.Activate(); //gameObject.Deactivate(); //objs.ForEach((value) => { value.Deactivate(); }); ///transform.SetEulerAngles(0, 0, 0); // this.Concurrent() // .Event(() => Debug.Log("Begin")) // .Delay(1f, () => Debug.Log("1f")) // .Delay(2f, () => Debug.Log("2f")) // .Delay(3f, () => Debug.Log("3f")) // .Until(() => Input.GetKeyDown(KeyCode.A)) // .OnStop(() => Debug.Log("Completed")) // .Begin(); EquipmentProcess_Task = new TaskData { TaskId = "Task_01", TaskName = "原则:先让水循环起来,最后启动压缩机", TaskDescription = "1、冷却塔风机。先开启冷却塔风机,为后续的冷却水循环建立散热条件。如果冷却塔有多个风扇,通常按需逐台开启" }; foreach (var item in GetComponentsInChildren()) { foreach (var itemstep in item.taskStep) { AddStep(itemstep); } } BubbleSortList(); EquipmentProcess_Task.OnTaskStarted += OnTaskStarted; TaskManager.Instance.SetMode(TaskMode.Exam); TaskManager.Instance.AddTask(EquipmentProcess_Task); TaskManager.Instance.Start(); } void BubbleSortList() { for (int i = 0; i < EquipmentProcess_Task.Steps.Count - 1; i++) { for (int j = 0; j < EquipmentProcess_Task.Steps.Count - 1 - i; j++) { if (EquipmentProcess_Task.Steps[j].StepId > EquipmentProcess_Task.Steps[j + 1].StepId) { TaskStep temp = EquipmentProcess_Task.Steps[j]; EquipmentProcess_Task.Steps[j] = EquipmentProcess_Task.Steps[j + 1]; EquipmentProcess_Task.Steps[j + 1] = temp; } } } } /// /// 添加 Step /// private void AddStep(int stepId, string desc) { var step = new TaskStep { StepId = stepId, Description = desc }; step.OnStepStarted += s => { Debug.Log($"【Step 开始】{s.Description}"); }; step.OnStepHint += s => { Debug.Log($"【提示】{s.Description}"); }; step.OnStepCompleted += s => { Debug.Log($"【Step 正确完成】{s.Description}"); }; step.OnStepError += s => { Debug.LogWarning($"【Step 错误完成】{s.Description}"); }; step.OnStepSkipped += s => { Debug.LogWarning($"【Step 跳过】{s.Description}"); }; EquipmentProcess_Task.Steps.Add(step); } /// /// 添加 Step /// private void AddStep(TaskStep step) { step.OnStepStarted += s => { Debug.Log($"【Step 开始】{s.Description}"); }; step.OnStepHint += s => { Debug.Log($"【提示】{s.Description}"); }; step.OnStepCompleted += s => { Debug.Log($"【Step 正确完成】{s.Description}"); }; step.OnStepError += s => { Debug.LogWarning($"【Step 错误完成】{s.Description}"); }; step.OnStepSkipped += s => { Debug.LogWarning($"【Step 跳过】{s.Description}"); }; EquipmentProcess_Task.Steps.Add(step); } /// /// 任务开始时重置示例状态 /// private void OnTaskStarted(TaskData task) { Debug.Log("任务开始,等待操作输入"); _expectStepIndex = 1; } }