diff --git a/SXElectricityInformationAcquisition/Assets/JunctionBox.cs b/SXElectricityInformationAcquisition/Assets/JunctionBox.cs index a8a6fbb1..cdde7ec6 100644 --- a/SXElectricityInformationAcquisition/Assets/JunctionBox.cs +++ b/SXElectricityInformationAcquisition/Assets/JunctionBox.cs @@ -48,19 +48,19 @@ public class JunctionBox : MonoBehaviour { case "接线盒纵向滑块001": hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.06131744f, -0.0075f, 0.0089f), 1f); - Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块002": hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.02013969f, -0.0075f, 0.0089f), 1f); - Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块003": hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.02001452f, -0.0075f, 0.0089f), 1f); - Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; case "接线盒纵向滑块004": hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.06075525f, -0.0075f, 0.0089f), 1f); - Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); break; } } diff --git a/SXElectricityInformationAcquisition/Assets/Model/鐢电嚎鏉/Mat/缁濈紭鑳跺甫缁戠嚎p1.mat b/SXElectricityInformationAcquisition/Assets/Model/鐢电嚎鏉/Mat/缁濈紭鑳跺甫缁戠嚎p1.mat index 50c8efb9..2fa1692f 100644 --- a/SXElectricityInformationAcquisition/Assets/Model/鐢电嚎鏉/Mat/缁濈紭鑳跺甫缁戠嚎p1.mat +++ b/SXElectricityInformationAcquisition/Assets/Model/鐢电嚎鏉/Mat/缁濈紭鑳跺甫缁戠嚎p1.mat @@ -114,12 +114,12 @@ Material: - _UVSec: 0 - _ZWrite: 1 - __dirty: 0 - - _step_p1: 0 - - _step_p2: 0 - - _step_p3: 0 - - _step_p4: 0 - - _step_p5: 0 - - _step_p6: 0 + - _step_p1: 1 + - _step_p2: 1 + - _step_p3: 1 + - _step_p4: 1 + - _step_p5: 1 + - _step_p6: 1 m_Colors: - _BaseCol: {r: 0.23429155, g: 0.28497556, b: 0.3679245, a: 0} - _Color: {r: 1, g: 1, b: 1, a: 1} diff --git a/SXElectricityInformationAcquisition/Assets/Model/璁惧/Mat/JZQRuning.mat b/SXElectricityInformationAcquisition/Assets/Model/璁惧/Mat/JZQRuning.mat index e1204148..76b2cdbd 100644 --- a/SXElectricityInformationAcquisition/Assets/Model/璁惧/Mat/JZQRuning.mat +++ b/SXElectricityInformationAcquisition/Assets/Model/璁惧/Mat/JZQRuning.mat @@ -25,7 +25,7 @@ Material: m_TexEnvs: [] m_Ints: [] m_Floats: - - _LightSpeed: 2 + - _LightSpeed: 3 - _LightSwitch: 0 - __dirty: 1 m_Colors: diff --git a/SXElectricityInformationAcquisition/Assets/Scenes/宸ュ叿闂碨cenes/宸ュ叿闂.unity b/SXElectricityInformationAcquisition/Assets/Scenes/宸ュ叿闂碨cenes/宸ュ叿闂.unity index 8d351f81..868dc5fd 100644 --- a/SXElectricityInformationAcquisition/Assets/Scenes/宸ュ叿闂碨cenes/宸ュ叿闂.unity +++ b/SXElectricityInformationAcquisition/Assets/Scenes/宸ュ叿闂碨cenes/宸ュ叿闂.unity @@ -7581,9 +7581,10 @@ MonoBehaviour: m_GameObject: {fileID: 505215068} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0234ae9c682a4828aa916e415ad8b21d, type: 3} + m_Script: {fileID: 11500000, guid: 51f73ee94f284a86b677a6bc74544094, type: 3} m_Name: m_EditorClassIdentifier: + _toolsPackScene: 0 --- !u!1 &514951653 GameObject: m_ObjectHideFlags: 0 diff --git a/SXElectricityInformationAcquisition/Assets/Scenes/鐜板満 _Test.unity b/SXElectricityInformationAcquisition/Assets/Scenes/鐜板満 _Test.unity index 4a3b0708..e34e0a01 100644 --- a/SXElectricityInformationAcquisition/Assets/Scenes/鐜板満 _Test.unity +++ b/SXElectricityInformationAcquisition/Assets/Scenes/鐜板満 _Test.unity @@ -26381,6 +26381,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 51f73ee94f284a86b677a6bc74544094, type: 3} m_Name: m_EditorClassIdentifier: + _toolsPackScene: 1 --- !u!4 &1516723168 Transform: m_ObjectHideFlags: 0 diff --git a/SXElectricityInformationAcquisition/Assets/Screwdriver.cs b/SXElectricityInformationAcquisition/Assets/Screwdriver.cs index 1af2af98..37d6f8e7 100644 --- a/SXElectricityInformationAcquisition/Assets/Screwdriver.cs +++ b/SXElectricityInformationAcquisition/Assets/Screwdriver.cs @@ -122,22 +122,22 @@ public class Screwdriver : MonoBehaviour if (hit.collider.gameObject.name == "盖_固定螺丝_Rup") { StartCoroutine(Rscrew()); - Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); } if (hit.collider.gameObject.name == "固定螺丝_Ldown") { StartCoroutine(Lscrew()); - Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); } if (hit.collider.gameObject.name == "壳固定螺丝_R") { Debug.Log(hit.collider.gameObject.name); - StartCoroutine(IERconcentratorScrew()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + StartCoroutine(IERconcentratorScrew()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); } if (hit.collider.gameObject.name == "壳固定螺丝_L") { Debug.Log(hit.collider.gameObject.name); - StartCoroutine(IELconcentratorScrew()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + StartCoroutine(IELconcentratorScrew()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); } for (int i = 0; i < ScrewObj.Length; i++) { @@ -146,17 +146,18 @@ public class Screwdriver : MonoBehaviour Debug.Log(hit.collider.gameObject.name); ScrewObj[i].gameObject.SetActive(false); ScrewdriverTrans.gameObject.transform.localPosition = new Vector3(3.1215f, 2.1383f, -1.3484f); + MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); } } if (hit.collider.gameObject.name == "固定螺丝_Rdown") { Debug.Log(hit.collider.gameObject.name); - StartCoroutine(right()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + StartCoroutine(right()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); } if (hit.collider.gameObject.name == "集电器固定螺丝_Ldown") { Debug.Log(hit.collider.gameObject.name); - StartCoroutine(left()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject); + StartCoroutine(left()); MotionEngine.GetModule().HandleClick(hit.collider.gameObject.name); } } diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/CharacterEquipWindow/CharacterMirrorManager.cs b/SXElectricityInformationAcquisition/Assets/Scripts/CharacterEquipWindow/CharacterMirrorManager.cs index d9b743e4..c58b36c4 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/CharacterEquipWindow/CharacterMirrorManager.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/CharacterEquipWindow/CharacterMirrorManager.cs @@ -35,7 +35,7 @@ public class CharacterMirrorManager : MonoBehaviour { if(EventSystem.current.IsPointerOverGameObject()) return; - MotionEngine.GetModule().HandleClick(this.gameObject); + MotionEngine.GetModule().HandleClick(this.gameObject.name); StartCoroutine(FadeIn(uiImage, 0.5f)); } diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ConsumePowerManager.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ConsumePowerManager.cs index ef5520a2..e0375f18 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ConsumePowerManager.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ConsumePowerManager.cs @@ -23,9 +23,9 @@ public class ConsumePowerManager : MonoBehaviour confirmBt.onClick.AddListener(delegate { - MotionEngine.GetModule().HandleClick(GameObject.Find("涓存椂鐢ㄧ數")); - MotionEngine.GetModule().HandleClick(GameObject.Find("鐜板満璋冭瘯")); - + MotionEngine.GetModule().HandleClick("涓存椂鐢ㄧ數"); + MotionEngine.GetModule().HandleClick("鐜板満璋冭瘯"); + OnOpenLight(); }); } diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/DataConfigManager.cs b/SXElectricityInformationAcquisition/Assets/Scripts/DataConfigManager.cs index 7f8ecca9..e9eb6c98 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/DataConfigManager.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/DataConfigManager.cs @@ -40,19 +40,19 @@ namespace DefaultNamespace public void SetProcessMode(int index) { - if (index == 0) + if (index == 0)// 鏁欏妯″紡 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Teaching; } - else if (index == 1) + else if (index == 1)// 鍩硅妯″紡 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Training; } - else if (index == 2) + else if (index == 2)// 缁冧範妯″紡 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Practice; } - else if (index == 3) + else if (index == 3)// 鑰冩牳妯″紡 { _processMode = DefaultNamespace.ProcessMode.ProcessMode.Assessment; } diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs index 5fffd763..37bf540c 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs @@ -6,23 +6,23 @@ namespace DefaultNamespace.ProcessMode { public class ActionWithDescription { - public List TargetObjects { get; set; } + public List TargetObjects { get; set; } public Action Action { get; set; } public string Description { get; set; } public bool IsSequential { get; set; } // 鏄惁鎸夐『搴忕偣鍑 - public HashSet ClickedObjects { get; private set; } // 宸茬偣鍑荤殑瀵硅薄闆嗗悎 + public HashSet ClickedObjects { get; private set; } // 宸茬偣鍑荤殑瀵硅薄闆嗗悎 public int CurrentObjectIndex { get; set; } // 褰撳墠瀵硅薄鐨勭偣鍑荤储寮曪紝浠呯敤浜庢寜椤哄簭鐐瑰嚮鐨勬儏鍐 public bool FeedbackDisplayed { get; set; } // 鏄惁宸茬粡鏄剧ず杩囧弽棣 public string StepDescription { get; set; } - public ActionWithDescription(List targetObjects, Action action, string description, bool isSequential,string stepDescription) + public ActionWithDescription(List targetObjects, Action action, string description, bool isSequential, string stepDescription) { - TargetObjects = targetObjects ?? new List(); + TargetObjects = targetObjects ?? new List(); Action = action; Description = description; IsSequential = isSequential; - ClickedObjects = new HashSet(); // 鍒濆鍖栧凡鐐瑰嚮鐨勫璞¢泦鍚 + ClickedObjects = new HashSet(); // 鍒濆鍖栧凡鐐瑰嚮鐨勫璞¢泦鍚 CurrentObjectIndex = 0; // 鍒濆鍖栦负绗竴涓璞 FeedbackDisplayed = false; // 鍒濆鍖栧弽棣堟湭鏄剧ず diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcess.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcess.cs index e1b80828..91d83d1f 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcess.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcess.cs @@ -6,7 +6,7 @@ namespace DefaultNamespace.ProcessMode { public string Type { get; set; } // 娴佺▼绫诲瀷锛堜緥濡傦細鏁欏銆佸煿璁佺粌涔狅級 public List Steps { get; private set; } // 娴佺▼涓殑姝ラ鍒楄〃 - + /// /// 鏋勯犲嚱鏁 /// @@ -16,7 +16,7 @@ namespace DefaultNamespace.ProcessMode Type = type; Steps = new List(); } - + /// /// 娣诲姞姝ラ鍒版祦绋嬩腑 /// @@ -25,7 +25,7 @@ namespace DefaultNamespace.ProcessMode { Steps.Add(step); } - + /// /// 璁$畻娴佺▼鐨勬昏瘎鍒 /// diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs index 19836a1f..bd318660 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs @@ -25,12 +25,14 @@ namespace DefaultNamespace.ProcessMode public delegate void UIEventHandler(); public delegate void SendMessagePrompt(string message); - - // 瀹氫箟涓涓簨浠讹紝浣跨敤濮旀墭绫诲瀷 + + /// + /// 鍏ㄩ儴娴佺▼缁撴潫璋冪敤鏂规硶 + /// public event CompleteEventHandler OnCompleteEvent; public event UIEventHandler OnUIEvent; public event SendMessagePrompt OnSendMessagePrompt; - + public void AddProcess(string type) { @@ -39,7 +41,7 @@ namespace DefaultNamespace.ProcessMode // processes[type] = new AnimationProcess(type); // Enum.TryParse(type, true, out currentMode); // } - + processes[type] = new AnimationProcess(type); Enum.TryParse(type, true, out currentMode); } @@ -58,7 +60,7 @@ namespace DefaultNamespace.ProcessMode } } - public void HandleClick(GameObject clickedObject) + public void HandleClick(string clickedObject) { string type = currentMode.ToString(); @@ -77,10 +79,10 @@ namespace DefaultNamespace.ProcessMode if (currentAction.CurrentObjectIndex < currentAction.TargetObjects.Count && currentAction.TargetObjects[currentAction.CurrentObjectIndex] == clickedObject) { - Debug.Log($"姝g‘鐐瑰嚮浜嗭細{clickedObject.name}"); + Debug.Log($"姝g‘鐐瑰嚮浜嗭細{clickedObject}"); currentAction.CurrentObjectIndex++; // 姝g‘鐐瑰嚮锛岄掑瀵硅薄绱㈠紩 currentAction.ClickedObjects.Add(clickedObject); // 娣诲姞鍒板凡鐐瑰嚮瀵硅薄闆嗗悎 - HandleModeSpecificFeedback(currentMode, currentAction); // 澶勭悊妯″紡鐗瑰畾鐨勫弽棣 + HandleModeFeedback(currentMode, currentAction); // 澶勭悊妯″紡鐗瑰畾鐨勫弽棣 if (currentAction.CurrentObjectIndex >= currentAction.TargetObjects.Count) { @@ -89,26 +91,26 @@ namespace DefaultNamespace.ProcessMode } else { - string correctObjectName = currentAction.TargetObjects[currentAction.CurrentObjectIndex].name; - Debug.Log($"閿欒鐐瑰嚮鎴栭『搴忛敊璇細{clickedObject.name}銆傛纭殑鐗╀綋鏄細{correctObjectName}"); + string correctObjectName = currentAction.TargetObjects[currentAction.CurrentObjectIndex]; + Debug.Log($"閿欒鐐瑰嚮鎴栭『搴忛敊璇細{clickedObject}銆傛纭殑鐗╀綋鏄細{correctObjectName}"); } } else { // 涓嶆寜椤哄簭鐐瑰嚮鐨勯昏緫 - if (currentAction.TargetObjects.Any(obj => obj.name == clickedObject.name)) + if (currentAction.TargetObjects.Any(obj => obj == clickedObject)) { - if (currentAction.ClickedObjects.Any(obj => obj.name == clickedObject.name)) + if (currentAction.ClickedObjects.Any(obj => obj == clickedObject)) { - Debug.Log($"閿欒鐐瑰嚮锛歿clickedObject.name}銆傝繖涓墿浣撳凡缁忕偣鍑昏繃銆"); + Debug.Log($"閿欒鐐瑰嚮锛歿clickedObject}銆傝繖涓墿浣撳凡缁忕偣鍑昏繃銆"); return; // 濡傛灉鐗╀綋宸茬粡鐐瑰嚮杩囷紝涓嶇户缁鐞 } if (!currentAction.ClickedObjects.Contains(clickedObject)) { - Debug.Log($"姝g‘鐐瑰嚮浜嗭細{clickedObject.name}"); + Debug.Log($"姝g‘鐐瑰嚮浜嗭細{clickedObject}"); currentAction.ClickedObjects.Add(clickedObject); // 娣诲姞鍒板凡鐐瑰嚮瀵硅薄闆嗗悎 - HandleModeSpecificFeedback(currentMode, currentAction); // 澶勭悊妯″紡鐗瑰畾鐨勫弽棣 + HandleModeFeedback(currentMode, currentAction); // 澶勭悊妯″紡鐗瑰畾鐨勫弽棣 if (currentAction.ClickedObjects.Count >= currentAction.TargetObjects.Count) { @@ -118,17 +120,17 @@ namespace DefaultNamespace.ProcessMode } else { - Debug.Log($"閿欒鐐瑰嚮锛歿clickedObject.name}"); + Debug.Log($"閿欒鐐瑰嚮锛歿clickedObject}"); List correctObjectNames = new List(); foreach (var obj in currentAction.TargetObjects) { if (!currentAction.ClickedObjects.Contains(obj)) { - correctObjectNames.Add(obj.name); + correctObjectNames.Add(obj); } } - string correctObjects = string.Join(", ", correctObjectNames); + string correctObjects = string.Join(",", correctObjectNames); Debug.Log($"姝g‘鐨勭墿浣撴槸锛歿correctObjects}"); } } @@ -145,7 +147,6 @@ namespace DefaultNamespace.ProcessMode { Debug.Log($"瀹屾垚浜嗗姩浣 {currentActionIndex + 1}"); step.PlayAnimation(currentActionIndex); // 鎾斁褰撳墠鍔ㄤ綔鐨勫姩鐢 - DisplayActionFeedback(currentMode, currentAction); // 鏄剧ず妯″紡鐗瑰畾鐨勫弽棣 currentActionIndex++; currentAction.CurrentObjectIndex = 0; // 閲嶇疆褰撳墠鍔ㄤ綔瀵硅薄绱㈠紩 @@ -159,20 +160,14 @@ namespace DefaultNamespace.ProcessMode currentStepIndex++; if (currentStepIndex < processes[currentMode.ToString()].Steps.Count) { - var nextStep = processes[currentMode.ToString()].Steps[currentStepIndex]; - PrepareNextStep(currentMode, nextStep.Actions[0]); // 鍑嗗涓嬩竴涓楠 - - // if (nextStep.Actions[0].StepDescription == "涓存椂鐢ㄧ數") - // { - // Debug.Log("涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數"); - // OnUIEvent(); - // } + var nextStep = processes[currentMode.ToString()].Steps[currentStepIndex]; + HandleModeFeedback(currentMode, nextStep.Actions[0]); // 鍑嗗涓嬩竴涓楠 } else { if (MotionEngine.GetModule().GetToolsPackScene() == ToolsPackScene.鍏朵粬) { - OnCompleteEvent(); + OnCompleteEvent?.Invoke(); } Debug.Log("鍏ㄩ儴瀹屾垚浜嗭紒锛侊紒锛"); @@ -181,73 +176,76 @@ namespace DefaultNamespace.ProcessMode else { Debug.Log("寮濮嬩笅涓涓姩浣滐紒"); - PrepareNextStep(currentMode, step.Actions[currentActionIndex]); // 浼犻掍笅涓涓姩浣滃璞 - - // if (step.Actions[currentActionIndex].StepDescription == "涓存椂鐢ㄧ數") - // { - // Debug.Log("涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數涓存椂鐢ㄧ數"); - // OnUIEvent(); - // } + HandleModeFeedback(currentMode, step.Actions[currentActionIndex]); // 浼犻掍笅涓涓姩浣滃璞 } } - // Start is called before the first frame update - + + /// - /// 鏍规嵁褰撳墠妯″紡鏄剧ず鐩稿簲鐨勫姩浣滃弽棣 + /// 鍒ゆ柇鏄惁涓烘渶鍚庝竴涓姩浣 /// - /// 褰撳墠鐨勬祦绋嬫ā寮 /// 褰撳墠鐨勫姩浣 - private void DisplayActionFeedback(ProcessMode mode, ActionWithDescription action) + /// 鏄惁涓烘渶鍚庝竴涓姩浣 + private bool IsLastAction(ActionWithDescription action) { - switch (mode) + if (currentStepIndex == processes[currentMode.ToString()].Steps.Count - 1 && + currentActionIndex == processes[currentMode.ToString()].Steps[currentStepIndex].Actions.Count - 1) { - case ProcessMode.Teaching: - HighlightNextObject(action); // 楂樹寒涓嬩竴涓渶瑕佺偣鍑荤殑鐗╀綋 - break; - case ProcessMode.Training: - //ShowTrainingStep(action); // 鍦ㄥ彸涓婅鏄剧ず娴佺▼姝ラ - break; - case ProcessMode.Practice: - ShowPracticeStep(action); // 鍙樉绀哄綋鍓嶆楠 - break; - case ProcessMode.Assessment: - // 鑰冩牳妯″紡鏃犳彁绀 - break; + return true; } + return false; } /// - /// 鍑嗗涓嬩竴涓楠ゆ垨鍔ㄤ綔锛屽苟鏍规嵁妯″紡澶勭悊鐩稿簲鐨勬彁绀烘垨鍙嶉 + /// 鏍规嵁褰撳墠妯″紡澶勭悊鐩稿簲鐨勫弽棣堥昏緫锛屽寘鎷噯澶囦笅涓涓楠ゆ垨鍔ㄤ綔 /// /// 褰撳墠鐨勬祦绋嬫ā寮 - /// 涓嬩竴涓楠ゆ垨鍔ㄤ綔 - public void PrepareNextStep(ProcessMode mode, object nextStepOrAction) + /// 褰撳墠姝ラ鎴栧姩浣 + public void HandleModeFeedback(ProcessMode mode, object stepOrAction) { switch (mode) { case ProcessMode.Teaching: - HighlightNextObject(nextStepOrAction as ActionWithDescription); // 楂樹寒鏄剧ず涓嬩竴涓渶瑕佺偣鍑荤殑鐗╀綋 + HighlightNextObject(stepOrAction as ActionWithDescription); // 楂樹寒涓嬩竴涓渶瑕佺偣鍑荤殑鐗╀綋 break; case ProcessMode.Training: - // 鍦ㄥ煿璁ā寮忎笅鍙墦鍗颁笅涓姝ラ鎴栧姩浣滅殑鎻忚堪 - if (nextStepOrAction is ActionWithDescription action) + if (stepOrAction is ActionWithDescription action) { Debug.Log($"鍩硅妯″紡锛歿action.Description}"); - OnSendMessagePrompt("鎻愮ず锛" + action.Description); + OnSendMessagePrompt?.Invoke("鎻愮ず锛" + action.Description); + // ShowTrainingStep(action.Description); // 鍦ㄥ彸涓婅鏄剧ず娴佺▼姝ラ } - else if (nextStepOrAction is AnimationStep step) + else if (stepOrAction is AnimationStep step) { if (step.Actions.Count > 0) { Debug.Log($"鍩硅妯″紡锛歿step.Actions[0].Description}"); - OnSendMessagePrompt("鎻愮ず锛" + step.Actions[0].Description); + OnSendMessagePrompt?.Invoke("鎻愮ず锛" + step.Actions[0].Description); + // ShowTrainingStep(step.Actions[0].Description); // 鍦ㄥ彸涓婅鏄剧ず娴佺▼姝ラ } } break; case ProcessMode.Practice: - // 缁冧範妯″紡涓嬩笉闇瑕佹彁鍓嶆樉绀轰笅涓涓楠ょ殑鎻忚堪 + if (stepOrAction is ActionWithDescription practiceAction) + { + if (IsLastAction(practiceAction)) + { + ShowPracticeStep(practiceAction.Description); // 鍙樉绀哄綋鍓嶆楠 + } + } + else if (stepOrAction is AnimationStep practiceStep) + { + if (practiceStep.Actions.Count > 0) + { + if (IsLastAction(practiceStep.Actions[0])) + { + ShowPracticeStep(practiceStep.Actions[0].Description); // 鍙樉绀哄綋鍓嶆楠 + } + } + } + break; case ProcessMode.Assessment: // 鑰冩牳妯″紡鏃犳彁绀 @@ -255,38 +253,6 @@ namespace DefaultNamespace.ProcessMode } } - - /// - /// 澶勭悊妯″紡鐗瑰畾鐨勫弽棣堥昏緫 - /// - /// 褰撳墠鐨勬祦绋嬫ā寮 - /// 褰撳墠鐨勫姩浣 - private void HandleModeSpecificFeedback(ProcessMode mode, ActionWithDescription action) - { - if (action.FeedbackDisplayed) - { - return; // 宸茬粡鏄剧ず杩囧弽棣堬紝涓嶅啀閲嶅鏄剧ず - } - - switch (mode) - { - case ProcessMode.Teaching: - HighlightNextObject(action); // 楂樹寒涓嬩竴涓渶瑕佺偣鍑荤殑鐗╀綋 - break; - case ProcessMode.Training: - //ShowTrainingStep(action.Description); // 鍦ㄥ彸涓婅鏄剧ず娴佺▼姝ラ - break; - case ProcessMode.Practice: - ShowPracticeStep(action.Description); // 鍙樉绀哄綋鍓嶆楠 - break; - case ProcessMode.Assessment: - // 鑰冩牳妯″紡鏃犳彁绀 - break; - } - - action.FeedbackDisplayed = true; // 鏍囪鍙嶉宸叉樉绀 - } - /// /// 楂樹寒鏄剧ず涓嬩竴涓渶瑕佺偣鍑荤殑鐗╀綋 /// @@ -295,21 +261,60 @@ namespace DefaultNamespace.ProcessMode { if (action != null) { + bool hasDuplicates = action.TargetObjects.GroupBy(x => x).Any(g => g.Count() > 1); + for (int i = action.CurrentObjectIndex; i < action.TargetObjects.Count; i++) { - GameObject nextObject = action.TargetObjects[i]; - if (!action.ClickedObjects.Contains(nextObject)) + string nextObject = action.TargetObjects[i]; + if (hasDuplicates) { - // 娣诲姞楂樹寒鏁堟灉鐨勯昏緫 - GameObject.Find(nextObject.name).GetComponent().highlighted = true; - - Debug.Log($"楂樹寒鏄剧ず锛歿nextObject.name}"); - break; + // 澶勭悊閲嶅鐗╀綋鐨勯珮浜昏緫 + int count = action.TargetObjects.Take(i).Count(o => o == nextObject); // 缁熻褰撳墠鐗╀綋涔嬪墠鍑虹幇鐨勬鏁 + if (!action.ClickedObjects.Contains($"{nextObject}_{count}")) + { + HighlightObject(nextObject); + break; + } + } + else + { + // 鏃犻噸澶嶇墿浣撶殑楂樹寒閫昏緫 + if (!action.ClickedObjects.Contains(nextObject)) + { + HighlightObject(nextObject); + break; + } } } } } + /// + /// 楂樹寒鎸囧畾鐨勭墿浣 + /// + /// 鐗╀綋鍚嶇О + private void HighlightObject(string objectName) + { + try + { + var obj = GameObject.Find(objectName); + if (obj != null) + { + var highlightEffect = obj.GetComponent(); + if (highlightEffect != null) + { + highlightEffect.highlighted = true; + } + + Debug.Log($"楂樹寒鏄剧ず锛歿objectName}"); + } + } + catch (Exception e) + { + Debug.LogError($"Error highlighting object {objectName}: {e.Message}"); + } + } + /// /// 璁剧疆褰撳墠妯″紡 /// @@ -321,27 +326,14 @@ namespace DefaultNamespace.ProcessMode currentActionIndex = 0; } - private void ShowTrainingStep(object nextStepOrAction) - { - if (nextStepOrAction is AnimationStep step) - { - Debug.Log($"鍩硅妯″紡锛歿step.StepDescription}"); - } - else if (nextStepOrAction is ActionWithDescription action) - { - Debug.Log($"鍩硅妯″紡锛歿action.Description}"); - } - } + private void ShowPracticeStep(object nextStepOrAction) { - if (nextStepOrAction is AnimationStep step) + if (nextStepOrAction is ActionWithDescription practiceAction) { - Debug.Log($"缁冧範妯″紡锛歿step.StepDescription}"); - } - else if (nextStepOrAction is ActionWithDescription action) - { - Debug.Log($"缁冧範妯″紡锛歿action.Description}"); + OnSendMessagePrompt(practiceAction.Description); + Debug.Log($"缁冧範妯″紡锛歿practiceAction.Description}"); } } diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessMode.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessMode.cs index 9234b3e7..b16df286 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessMode.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessMode.cs @@ -5,10 +5,22 @@ namespace DefaultNamespace.ProcessMode /// public enum ProcessMode { - Teaching, // 鏁欏妯″紡 - Training, // 鍩硅妯″紡 - Practice, // 缁冧範妯″紡 - Assessment // 鑰冩牳妯″紡 + /// + /// 鏁欏妯″紡 + /// + Teaching, + /// + /// 鍩硅妯″紡 + /// + Training, + /// + /// 缁冧範妯″紡 + /// + Practice, + /// + /// 鑰冩牳妯″紡 + /// + Assessment } } \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/SceneProcessLauncher.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/SceneProcessLauncher.cs index aef4df16..bdb091de 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/SceneProcessLauncher.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/SceneProcessLauncher.cs @@ -10,70 +10,75 @@ using UnityEngine; namespace DefaultNamespace.ProcessMode { - [ScriptDescription("鐜板満鍦烘櫙鐨勬祦绋嬪惎鍔ㄥ櫒")] + [ScriptDescription("鍦烘櫙鐨勬祦绋嬪惎鍔ㄥ櫒")] public class SceneProcessLauncher : MonoBehaviour { private AnimationProcessManager processManager; - + [SerializeField] private ToolsPackScene _toolsPackScene; + [SerializeField] private ProcessMode _processMode; private async void Start() { await Task.Delay(TimeSpan.FromSeconds(1)); - - + + processManager = MotionEngine.GetModule(); - + processManager.ClearProcess(); - - processManager.AddProcess(MotionEngine.GetModule().GetProcessMode().ToString()); - - string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/SceneStepData.json"); + + _processMode = MotionEngine.GetModule().GetProcessMode(); + + + processManager.AddProcess(_processMode.ToString()); + + string json = ""; + + if (_toolsPackScene == ToolsPackScene.宸ュ叿闂) + { + json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/ToolsSceneStepData.json"); + } + else + { + json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/SceneStepData.json"); + } + StepsContainer stepsContainer = JsonConvert.DeserializeObject(json); - + foreach (var stepData in stepsContainer.Steps) { List actions = new List(); foreach (var actionData in stepData.Actions) { - List targetObjects = new List(); + List targetObjects = new List(); foreach (var objectName in actionData.TargetObjects) { - GameObject obj = GameObject.Find(objectName); - if (obj != null) - { - targetObjects.Add(obj); - } - else - { - Debug.LogError($"Object not found: {objectName}"); - } + targetObjects.Add(objectName); } Action action = () => { }; - actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential,stepData.StepDescription)); + actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential, stepData.StepDescription)); } AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions); - processManager.AddStepToProcess(MotionEngine.GetModule().GetProcessMode().ToString(), step); + processManager.AddStepToProcess(_processMode.ToString(), step); } - InitializeFirstStep(); - + if (_processMode == ProcessMode.Teaching) + InitializeFirstStep(); } - + private void InitializeFirstStep() { - ProcessMode initialMode = ProcessMode.Training; // 鍋囪鍒濆妯″紡鏄暀瀛︽ā寮 - MotionEngine.GetModule().SetCurrentMode(initialMode); + MotionEngine.GetModule().SetCurrentMode(_processMode); if (MotionEngine.GetModule().CurrentProcess.Steps.Count > 0) { AnimationStep firstStep = MotionEngine.GetModule().CurrentProcess.Steps[0]; if (firstStep.Actions.Count > 0) { - MotionEngine.GetModule().PrepareNextStep(initialMode, firstStep.Actions[0]); + MotionEngine.GetModule().HandleModeFeedback(_processMode, firstStep.Actions[0]); } } } diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs index b0ab5d0d..001df33c 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs @@ -46,7 +46,7 @@ namespace ToolsPack if ( MotionEngine.GetModule().GetToolsPackScene() == ToolsPackScene.宸ュ叿闂) { - MotionEngine.GetModule().HandleClick(this.gameObject); + MotionEngine.GetModule().HandleClick(this.gameObject.name); if (IsClick) MotionEngine.GetModule().AddToolsPack(this.name, this.gameObject); this.gameObject.SetActive(false); diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsSceneProcessLauncher.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsSceneProcessLauncher.cs index b0f44a31..80e0054a 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsSceneProcessLauncher.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsSceneProcessLauncher.cs @@ -1,86 +1,78 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Threading.Tasks; -using DefaultNamespace; -using DefaultNamespace.Dto; -using DefaultNamespace.ProcessMode; -using MotionFramework; -using Newtonsoft.Json; -using UnityEngine; - -namespace ToolsPack -{ - - - [ScriptDescription("宸ュ叿闂村満鏅殑娴佺▼鍚姩鍣")] - public class ToolsSceneProcessLauncher : MonoBehaviour - { - private AnimationProcessManager processManager; - - - private async void Start() - { - await Task.Delay(TimeSpan.FromSeconds(1)); - - - processManager = MotionEngine.GetModule(); - - - processManager.ClearProcess(); - - - processManager.AddProcess( MotionEngine.GetModule().GetProcessMode().ToString()); - - string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/ToolsSceneStepData.json"); - StepsContainer stepsContainer = JsonConvert.DeserializeObject(json); - - - foreach (var stepData in stepsContainer.Steps) - { - List actions = new List(); - - foreach (var actionData in stepData.Actions) - { - List targetObjects = new List(); - foreach (var objectName in actionData.TargetObjects) - { - GameObject obj = GameObject.Find(objectName); - if (obj != null) - { - targetObjects.Add(obj); - } - else - { - // Debug.LogError($"Object not found: {objectName}"); - } - } - - Action action = () => { }; - actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential,stepData.StepDescription)); - } - - AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions); - processManager.AddStepToProcess(MotionEngine.GetModule().GetProcessMode().ToString(), step); - } - - InitializeFirstStep(); - - } - - private void InitializeFirstStep() - { - MotionEngine.GetModule().SetCurrentMode(MotionEngine.GetModule().GetProcessMode()); - - if (MotionEngine.GetModule().CurrentProcess.Steps.Count > 0) - { - AnimationStep firstStep = MotionEngine.GetModule().CurrentProcess.Steps[0]; - if (firstStep.Actions.Count > 0) - { - MotionEngine.GetModule().PrepareNextStep(MotionEngine.GetModule().GetProcessMode(), firstStep.Actions[0]); - } - } - } - - } -} \ No newline at end of file +// using System; +// using System.Collections; +// using System.Collections.Generic; +// using System.Threading.Tasks; +// using DefaultNamespace; +// using DefaultNamespace.Dto; +// using DefaultNamespace.ProcessMode; +// using MotionFramework; +// using Newtonsoft.Json; +// using UnityEngine; +// +// namespace ToolsPack +// { +// +// +// [ScriptDescription("宸ュ叿闂村満鏅殑娴佺▼鍚姩鍣")] +// public class ToolsSceneProcessLauncher : MonoBehaviour +// { +// private AnimationProcessManager processManager; +// +// +// private async void Start() +// { +// await Task.Delay(TimeSpan.FromSeconds(1)); +// +// +// processManager = MotionEngine.GetModule(); +// +// +// processManager.ClearProcess(); +// +// +// processManager.AddProcess( MotionEngine.GetModule().GetProcessMode().ToString()); +// +// string json = +// StepsContainer stepsContainer = JsonConvert.DeserializeObject(json); +// +// +// foreach (var stepData in stepsContainer.Steps) +// { +// List actions = new List(); +// +// foreach (var actionData in stepData.Actions) +// { +// List targetObjects = new List(); +// foreach (var objectName in actionData.TargetObjects) +// { +// targetObjects.Add(objectName); +// } +// +// Action action = () => { }; +// actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential,stepData.StepDescription)); +// } +// +// AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions); +// processManager.AddStepToProcess(MotionEngine.GetModule().GetProcessMode().ToString(), step); +// } +// +// InitializeFirstStep(); +// +// } +// +// private void InitializeFirstStep() +// { +// MotionEngine.GetModule().SetCurrentMode(MotionEngine.GetModule().GetProcessMode()); +// +// if (MotionEngine.GetModule().CurrentProcess.Steps.Count > 0) +// { +// AnimationStep firstStep = MotionEngine.GetModule().CurrentProcess.Steps[0]; +// if (firstStep.Actions.Count > 0) +// { +// MotionEngine.GetModule().HandleModeFeedback(MotionEngine.GetModule().GetProcessMode(), firstStep.Actions[0]); +// } +// } +// } +// +// } +// } \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/test1.cs b/SXElectricityInformationAcquisition/Assets/Scripts/test1.cs index a0fef79a..a4188c79 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/test1.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/test1.cs @@ -14,7 +14,7 @@ public class test1 : MonoBehaviour { this.GetComponent