diff --git a/SXElectricityInformationAcquisition/Assembly-CSharp.csproj b/SXElectricityInformationAcquisition/Assembly-CSharp.csproj index 4e776b20..5fa77af0 100644 --- a/SXElectricityInformationAcquisition/Assembly-CSharp.csproj +++ b/SXElectricityInformationAcquisition/Assembly-CSharp.csproj @@ -45,12 +45,14 @@ + + @@ -65,6 +67,7 @@ + @@ -109,6 +112,7 @@ + @@ -162,8 +166,10 @@ + + @@ -174,6 +180,7 @@ + diff --git a/SXElectricityInformationAcquisition/Assets/Editor/ScriptDescriptionEditor.cs b/SXElectricityInformationAcquisition/Assets/Editor/ScriptDescriptionEditor.cs index 6c268ad8..a5a3ef7f 100644 --- a/SXElectricityInformationAcquisition/Assets/Editor/ScriptDescriptionEditor.cs +++ b/SXElectricityInformationAcquisition/Assets/Editor/ScriptDescriptionEditor.cs @@ -6,6 +6,9 @@ public class ScriptDescriptionEditor : Editor { private GUIStyle descriptionStyle; + + + private void OnEnable() { descriptionStyle = new GUIStyle(EditorStyles.label) diff --git a/SXElectricityInformationAcquisition/Assets/Framework/GameLauncher.cs b/SXElectricityInformationAcquisition/Assets/Framework/GameLauncher.cs index a09e7d95..1566c126 100644 --- a/SXElectricityInformationAcquisition/Assets/Framework/GameLauncher.cs +++ b/SXElectricityInformationAcquisition/Assets/Framework/GameLauncher.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using DefaultNamespace; +using DefaultNamespace.ProcessMode; using Framework.Scripts.Runtime.Engine.Engine.Camera; using UnityEngine; @@ -64,6 +65,10 @@ public class GameLauncher : MonoBehaviour MotionEngine.CreateModule(); //数据配置文件 MotionEngine.CreateModule(); + + //流程管理器 + MotionEngine.CreateModule(); + } private void HandleMotionFrameworkLog(ELogLevel logLevel, string log) diff --git a/SXElectricityInformationAcquisition/Assets/Model/鐢电嚎鏉/Mat/缁濈紭鑳跺甫缁戠嚎p1.mat b/SXElectricityInformationAcquisition/Assets/Model/鐢电嚎鏉/Mat/缁濈紭鑳跺甫缁戠嚎p1.mat index 2fa1692f..50c8efb9 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: 1 - - _step_p2: 1 - - _step_p3: 1 - - _step_p4: 1 - - _step_p5: 1 - - _step_p6: 1 + - _step_p1: 0 + - _step_p2: 0 + - _step_p3: 0 + - _step_p4: 0 + - _step_p5: 0 + - _step_p6: 0 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/Scenes/鐜板満 _Test.unity b/SXElectricityInformationAcquisition/Assets/Scenes/鐜板満 _Test.unity index 71626596..4aea1a28 100644 --- a/SXElectricityInformationAcquisition/Assets/Scenes/鐜板満 _Test.unity +++ b/SXElectricityInformationAcquisition/Assets/Scenes/鐜板満 _Test.unity @@ -20720,6 +20720,63 @@ Transform: m_Children: [] m_Father: {fileID: 1886732940} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1199227227 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1091812145067508994, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6026879024415736155, guid: fa12b84946083d14cb4447029910be28, type: 3} + propertyPath: m_Name + value: APP + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: fa12b84946083d14cb4447029910be28, type: 3} --- !u!1 &1203342266 GameObject: m_ObjectHideFlags: 0 @@ -26534,6 +26591,64 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1513575210} m_CullTransparentMesh: 1 +--- !u!1 &1516723166 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1516723168} + - component: {fileID: 1516723167} + - component: {fileID: 1516723169} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1516723167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516723166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 51f73ee94f284a86b677a6bc74544094, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1516723168 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516723166} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 303.8186, y: 1.9446667, z: 164.25206} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1516723169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516723166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 63b7e72fa2d34c0ca56c938039f733e2, type: 3} + m_Name: + m_EditorClassIdentifier: + toolsPackScene: 1 --- !u!1 &1521115505 GameObject: m_ObjectHideFlags: 0 @@ -28056,74 +28171,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1588077158} m_CullTransparentMesh: 1 ---- !u!1 &1610656807 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1610656810} - - component: {fileID: 1610656809} - - component: {fileID: 1610656808} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1610656808 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1610656807} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &1610656809 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1610656807} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &1610656810 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1610656807} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1614669908 GameObject: m_ObjectHideFlags: 0 @@ -230358,9 +230405,10 @@ SceneRoots: - {fileID: 1886732940} - {fileID: 1467737217} - {fileID: 826737787} - - {fileID: 1610656810} - {fileID: 1805985062} - {fileID: 1204801357} - {fileID: 1987581050} - {fileID: 1505150131} - {fileID: 1986025700} + - {fileID: 1516723168} + - {fileID: 1199227227} diff --git a/SXElectricityInformationAcquisition/Assets/Screwdriver.cs b/SXElectricityInformationAcquisition/Assets/Screwdriver.cs index 84f64228..8b65442f 100644 --- a/SXElectricityInformationAcquisition/Assets/Screwdriver.cs +++ b/SXElectricityInformationAcquisition/Assets/Screwdriver.cs @@ -40,7 +40,7 @@ public class Screwdriver : MonoBehaviour /// /// 螺丝 - /// + /// a public GameObject[] ScrewObj; /// @@ -202,6 +202,7 @@ public class Screwdriver : MonoBehaviour ScrewL.gameObject.SetActive(false); } + /// /// 集中器右侧螺丝 /// diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs new file mode 100644 index 00000000..e87a7abf --- /dev/null +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace DefaultNamespace.ProcessMode +{ + public class ActionWithDescription + { + public List TargetObjects { get; set; } // 闇瑕佺偣鍑荤殑鐩爣鐗╀綋鍒楄〃 + public Action Action { get; set; } // 涓庣偣鍑诲叧鑱旂殑鍔ㄧ敾鎴栧弽搴 + public string Description { get; set; } // 鍔ㄤ綔鎻忚堪 + public int CurrentObjectIndex { get; set; } // 褰撳墠瀵硅薄鐨勭偣鍑荤储寮 + + public ActionWithDescription(List targetObjects, Action action, string description) + { + TargetObjects = targetObjects ?? new List(); + Action = action; + Description = description; + CurrentObjectIndex = 0; // 鍒濆鍖栦负绗竴涓璞 + } + } + + +} \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs.meta b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs.meta new file mode 100644 index 00000000..db09fd60 --- /dev/null +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ActionWithDescription.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f69314a2c8ae4f2f9463f3d3a29d7a30 +timeCreated: 1718109086 \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs index 7c0f6eb0..98fe11fd 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationProcessManager.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using MotionFramework; using UnityEngine; @@ -6,40 +7,16 @@ using UnityEngine.UI; namespace DefaultNamespace.ProcessMode { [ScriptDescription("娴佺▼妯″紡绠$悊鍣")] - public class AnimationProcessManager : MonoBehaviour + public class AnimationProcessManager : ModuleSingleton, IModule { - private Dictionary processes; // 瀛樺偍涓嶅悓绫诲瀷娴佺▼鐨勫瓧鍏 + private Dictionary processes = new Dictionary(); public ProcessMode currentMode; // 褰撳墠妯″紡 private int currentStepIndex; // 褰撳墠姝ラ绱㈠紩 - private ProcessUIManager uiManager; // 寮曠敤UIManager瀹炰緥 + private int currentActionIndex; // 褰撳墠鍔ㄤ綔绱㈠紩锛岀‘淇濆姩浣滈『搴 + private int currentActionGameIndex; // 褰撳墠鍔ㄤ綔绱㈠紩锛岀‘淇濆姩浣滈『搴 + private List incorrectClicks; // 閿欒鐐瑰嚮鐨勮褰曞垪琛 - /// - /// 鏋勯犲嚱鏁 - /// - /// UIManager瀹炰緥 - public AnimationProcessManager(ProcessUIManager uiManager) - { - this.uiManager = uiManager; - processes = new Dictionary(); - InitializeProcesses(); // 鍒濆鍖栨祦绋 - currentStepIndex = 0; - } - /// - /// 鍒濆鍖栨墍鏈夋祦绋 - /// - private void InitializeProcesses() - { - AddProcess("Teaching"); // 娣诲姞鏁欏娴佺▼ - AddProcess("Training"); // 娣诲姞鍩硅娴佺▼ - AddProcess("Practice"); // 娣诲姞缁冧範娴佺▼ - AddProcess("Assessment"); // 娣诲姞鑰冩牳娴佺▼ - } - - /// - /// 娣诲姞涓涓柊鐨勬祦绋 - /// - /// 娴佺▼绫诲瀷 public void AddProcess(string type) { if (!processes.ContainsKey(type)) @@ -48,11 +25,6 @@ namespace DefaultNamespace.ProcessMode } } - /// - /// 鍚戞寚瀹氱被鍨嬬殑娴佺▼涓坊鍔犳楠 - /// - /// 娴佺▼绫诲瀷 - /// 瑕佹坊鍔犵殑姝ラ public void AddStepToProcess(string type, AnimationStep step) { if (processes.ContainsKey(type)) @@ -61,24 +33,6 @@ namespace DefaultNamespace.ProcessMode } } - /// - /// 鑾峰彇鎸囧畾绫诲瀷娴佺▼鐨勬昏瘎鍒 - /// - /// 娴佺▼绫诲瀷 - /// 鎬昏瘎鍒 - public float GetTotalScoreForProcess(string type) - { - if (processes.ContainsKey(type)) - { - return processes[type].CalculateTotalScore(); - } - return 0; - } - - /// - /// 澶勭悊鐢ㄦ埛鐐瑰嚮浜嬩欢 - /// - /// 琚偣鍑荤殑瀵硅薄 public void HandleClick(GameObject clickedObject) { string type = currentMode.ToString(); @@ -90,35 +44,113 @@ namespace DefaultNamespace.ProcessMode if (currentStepIndex < process.Steps.Count) { AnimationStep step = process.Steps[currentStepIndex]; + ActionWithDescription currentAction = step.Actions[currentActionIndex]; - if (step.CorrectObject == clickedObject) + // 妫鏌ュ綋鍓嶇偣鍑绘槸鍚︿负褰撳墠鍔ㄤ綔棰勬湡鐨勫璞 + if (currentAction.CurrentObjectIndex < currentAction.TargetObjects.Count && + currentAction.TargetObjects[currentAction.CurrentObjectIndex] == clickedObject) { - step.PlayAnimation(); + Debug.Log($"姝g‘鐐瑰嚮浜嗭細{clickedObject.name}"); + currentAction.CurrentObjectIndex++; // 姝g‘鐐瑰嚮锛岄掑瀵硅薄绱㈠紩 - switch (currentMode) + // 妫鏌ユ槸鍚﹀畬鎴愪簡褰撳墠鍔ㄤ綔涓殑鎵鏈夊璞$偣鍑 + if (currentAction.CurrentObjectIndex >= currentAction.TargetObjects.Count) { - case ProcessMode.Teaching: - uiManager.HighlightNextStep(step); // 楂樹寒涓嬩竴涓楠 - break; - case ProcessMode.Training: - uiManager.ShowTrainingStep(step); // 鏄剧ず鍩硅姝ラ - break; - case ProcessMode.Practice: - uiManager.ShowPracticeStep(step); // 鏄剧ず缁冧範姝ラ - break; - case ProcessMode.Assessment: - // 鏃犳彁绀 - break; - } + Debug.Log($"瀹屾垚浜嗗姩浣 {currentActionIndex + 1}"); + step.PlayAnimation(currentActionIndex); // 鎾斁褰撳墠鍔ㄤ綔鐨勫姩鐢 + DisplayActionFeedback(currentMode, currentAction); // 鏄剧ず鍙嶉 - currentStepIndex++; + // 閲嶇疆褰撳墠鍔ㄤ綔瀵硅薄绱㈠紩锛屽苟鍑嗗涓嬩竴涓姩浣 + currentActionIndex++; + currentAction.CurrentObjectIndex = 0; + + if (currentActionIndex >= step.Actions.Count) + { + Debug.Log("鎵鏈夊姩浣滃畬鎴愶紒"); + currentActionIndex = 0; // 閲嶇疆鍔ㄤ綔绱㈠紩鎴栬繘鍏ヤ笅涓涓ぇ姝ラ + currentStepIndex++; + } + else + { + Debug.Log("寮濮嬩笅涓涓姩浣滐紒"); + PrepareNextStep(currentMode, process, currentStepIndex); + } + } } else { - Debug.Log("Incorrect object clicked."); + Debug.Log($"閿欒鐐瑰嚮鎴栭『搴忛敊璇細{clickedObject.name}"); + // 閿欒鐐瑰嚮澶勭悊锛屽彲浠ラ夋嫨閲嶇疆褰撳墠鍔ㄤ綔鐨勭储寮曟垨鍏朵粬澶勭悊閫昏緫 } } } } + + + private void DisplayActionFeedback(ProcessMode mode, ActionWithDescription action) + { + switch (mode) + { + case ProcessMode.Teaching: + // 楂樹寒鏄剧ず涓嬩竴涓渶瑕佺偣鍑荤殑鍦版柟 + // HighlightNextStep(action.); + break; + case ProcessMode.Training: + // 鍦ㄧ敾闈㈠彸涓婅鏄剧ず娴佺▼姝ラ + // uiManager.ShowTrainingStep(action.Description); + break; + case ProcessMode.Practice: + // 鍙樉绀哄綋鍓嶆楠 + // uiManager.ShowPracticeStep(action.Description); + break; + case ProcessMode.Assessment: + // 鏃犱换浣曟彁绀 + break; + } + } + + private void PrepareNextStep(ProcessMode mode, AnimationProcess process, int nextStepIndex) + { + if (nextStepIndex < process.Steps.Count) + { + ActionWithDescription nextAction = process.Steps[nextStepIndex].Actions[0]; + if (mode == ProcessMode.Teaching) + { + // HighlightNextStep(nextAction.TargetObject); + } + else if (mode == ProcessMode.Training) + { + // uiManager.ShowTrainingStep("寮濮嬩笅涓涓楠..."); + } + } + else + { + // uiManager.DisplayMessage("鎵鏈夋楠ゅ畬鎴愶紒"); + } + } + + private void HighlightNextStep(GameObject target) + { + // 瀹炵幇楂樹寒閫昏緫锛屾瘮濡傛敼鍙樺璞¢鑹叉垨娣诲姞鍏夌幆鏁堟灉 + } + + + public void OnCreate(object createParam) + { + processes = new Dictionary(); + incorrectClicks = new List(); + } + + public void OnUpdate() + { + } + + public void OnDestroy() + { + } + + public void OnGUI() + { + } } } \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationStep.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationStep.cs index 7f27f184..418d8aeb 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationStep.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/AnimationStep.cs @@ -9,32 +9,24 @@ namespace DefaultNamespace.ProcessMode /// public class AnimationStep { - public string Description { get; set; } // 姝ラ鎻忚堪 + public string StepDescription { get; set; } // 姝ラ鎻忚堪 public float Score { get; set; } // 姝ラ璇勫垎 - public Action Animation { get; private set; } // DOTween鍔ㄧ敾 - public GameObject CorrectObject { get; set; } // 姝g‘鐨勭偣鍑诲璞 + public List Actions { get; private set; } // 鍔ㄤ綔鍒楄〃 - /// - /// 鏋勯犲嚱鏁 - /// - /// 姝ラ鎻忚堪 - /// 姝ラ璇勫垎 - /// 瑕佹挱鏀剧殑鍔ㄧ敾 - /// 姝g‘鐨勭偣鍑诲璞 - public AnimationStep(string description, float score, Action animation, GameObject correctObject) + public AnimationStep(string stepDescription, float score, List actions) { - Description = description; + StepDescription = stepDescription; Score = score; - Animation = animation; - CorrectObject = correctObject; + Actions = actions; } - /// - /// 鎾斁鍔ㄧ敾 - /// - public void PlayAnimation() + public void PlayAnimation(int index) { - Animation?.Invoke(); + if (index >= 0 && index < Actions.Count) + { + Actions[index].Action?.Invoke(); // 鎵ц鍔ㄧ敾 + Debug.Log(Actions[index].Description); // 杈撳嚭鍔ㄤ綔鎻忚堪 + } } } } \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/IncorrectClick.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/IncorrectClick.cs new file mode 100644 index 00000000..009f4b89 --- /dev/null +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/IncorrectClick.cs @@ -0,0 +1,19 @@ +using UnityEngine; + +namespace DefaultNamespace.ProcessMode +{ + public class IncorrectClick + { + public GameObject ClickedObject { get; set; } + public int StepIndex { get; set; } + public int ActionIndex { get; set; } // 鏂板锛氬姩浣滅储寮 + + public IncorrectClick(GameObject clickedObject, int stepIndex, int actionIndex) + { + ClickedObject = clickedObject; + StepIndex = stepIndex; + ActionIndex = actionIndex; + } + } + +} \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/IncorrectClick.cs.meta b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/IncorrectClick.cs.meta new file mode 100644 index 00000000..80d9aae4 --- /dev/null +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/IncorrectClick.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e49a83ec6ff240d38d3b702d006793b2 +timeCreated: 1718155453 \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessUIManager.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessUIManager.cs index ec81864f..478cbea5 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessUIManager.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/ProcessUIManager.cs @@ -1,84 +1,85 @@ -using UnityEngine; -using UnityEngine.UI; - -namespace DefaultNamespace.ProcessMode -{ - public class ProcessUIManager - { - public Text trainingTextBox; // 鍩硅妯″紡鐨勬枃鏈 - public Text practiceTextBox; // 缁冧範妯″紡鐨勬枃鏈 - public GameObject highlightObject; // 楂樹寒瀵硅薄锛岀敤浜庢暀瀛︽ā寮 - - public AnimationProcessManager processManager; // 娴佺▼绠$悊鍣ㄥ疄渚 - - private void Start() - { - processManager = new AnimationProcessManager(this); // 浼犻扷IManager瀹炰緥 - } - - private void Update() - { - if (Input.GetMouseButtonDown(0)) - { - GameObject clickedObject = DetectClickedObject(); - if (clickedObject != null) - { - processManager.HandleClick(clickedObject); - } - } - } - - /// - /// 妫娴嬬偣鍑荤殑瀵硅薄 - /// - /// 鐐瑰嚮鐨勫璞 - private GameObject DetectClickedObject() - { - Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); - RaycastHit hit; - if (Physics.Raycast(ray, out hit)) - { - return hit.collider.gameObject; - } - return null; - } - - /// - /// 鏄剧ず鍩硅姝ラ淇℃伅 - /// - /// 褰撳墠姝ラ - public void ShowTrainingStep(AnimationStep step) - { - if (trainingTextBox != null) - { - trainingTextBox.text = step.Description; - } - } - - /// - /// 鏄剧ず缁冧範姝ラ淇℃伅 - /// - /// 褰撳墠姝ラ - public void ShowPracticeStep(AnimationStep step) - { - if (practiceTextBox != null) - { - practiceTextBox.text = step.Description; - } - } - - /// - /// 楂樹寒鏄剧ず涓嬩竴涓渶瑕佺偣鍑荤殑鍦版柟锛堟暀瀛︽ā寮忥級 - /// - /// 褰撳墠姝ラ - public void HighlightNextStep(AnimationStep step) - { - if (highlightObject != null) - { - highlightObject.SetActive(true); - // 鍋囪浣犳湁涓涓柟娉曟潵瀹氫綅楂樹寒瀵硅薄 - // highlightObject.transform.position = ...; - } - } - } -} \ No newline at end of file +// using UnityEngine; +// using UnityEngine.UI; +// +// namespace DefaultNamespace.ProcessMode +// { +// public class ProcessUIManager : MonoBehaviour +// { +// public Text trainingTextBox; // 鍩硅妯″紡鐨勬枃鏈 +// public Text practiceTextBox; // 缁冧範妯″紡鐨勬枃鏈 +// public GameObject highlightObject; // 楂樹寒瀵硅薄锛岀敤浜庢暀瀛︽ā寮 +// +// public AnimationProcessManager processManager; // 娴佺▼绠$悊鍣ㄥ疄渚 +// +// private void Start() +// { +// processManager = new AnimationProcessManager(); // 浼犻扷IManager瀹炰緥 +// } +// +// private void Update() +// { +// if (Input.GetMouseButtonDown(0)) +// { +// GameObject clickedObject = DetectClickedObject(); +// if (clickedObject != null) +// { +// processManager.HandleClick(clickedObject); +// } +// } +// } +// +// /// +// /// 妫娴嬬偣鍑荤殑瀵硅薄 +// /// +// /// 鐐瑰嚮鐨勫璞 +// private GameObject DetectClickedObject() +// { +// Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); +// RaycastHit hit; +// if (Physics.Raycast(ray, out hit)) +// { +// return hit.collider.gameObject; +// } +// +// return null; +// } +// +// /// +// /// 鏄剧ず鍩硅姝ラ淇℃伅 +// /// +// /// 褰撳墠姝ラ +// public void ShowTrainingStep(AnimationStep step) +// { +// if (trainingTextBox != null) +// { +// trainingTextBox.text = step.Description; +// } +// } +// +// /// +// /// 鏄剧ず缁冧範姝ラ淇℃伅 +// /// +// /// 褰撳墠姝ラ +// public void ShowPracticeStep(AnimationStep step) +// { +// if (practiceTextBox != null) +// { +// practiceTextBox.text = step.Description; +// } +// } +// +// /// +// /// 楂樹寒鏄剧ず涓嬩竴涓渶瑕佺偣鍑荤殑鍦版柟锛堟暀瀛︽ā寮忥級 +// /// +// /// 褰撳墠姝ラ +// public void HighlightNextStep(AnimationStep step) +// { +// if (highlightObject != null) +// { +// highlightObject.SetActive(true); +// // 鍋囪浣犳湁涓涓柟娉曟潵瀹氫綅楂樹寒瀵硅薄 +// // highlightObject.transform.position = ...; +// } +// } +// } +// } \ No newline at end of file diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/test.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/test.cs index 0f2df60c..76e0d882 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/test.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ProcessMode/test.cs @@ -1,4 +1,8 @@ +using System; +using System.Collections; +using System.Collections.Generic; using DG.Tweening; +using MotionFramework; using UnityEngine; namespace DefaultNamespace.ProcessMode @@ -7,40 +11,54 @@ namespace DefaultNamespace.ProcessMode { private AnimationProcessManager processManager; - public GameObject device1; // 鍋囪杩欐槸鍦烘櫙涓殑涓涓澶 - public GameObject device2; // 鍋囪杩欐槸鍦烘櫙涓殑鍙︿竴涓澶 - private void Start() + private IEnumerator Start() { - processManager = GetComponent(); + processManager = MotionEngine.GetModule(); - // 璁剧疆妯″紡 - processManager.currentMode = ProcessMode.Teaching; - // 鍒涘缓姝ラ骞堕伩鍏嶆湭鍒濆鍖栫殑閿欒 - AnimationStep step1 = null; - AnimationStep step2 = null; + yield return new WaitForSeconds(1); + + processManager.AddProcess("Teaching"); + + List actions = CreateStepActions(); + AnimationStep step = new AnimationStep($"鎻忚堪姝ラ", 100, actions); + processManager.AddStepToProcess("Teaching", step); - step1 = new AnimationStep("Step 1: Click device1", 10, () => - { - device1.transform.DOMove(new Vector3(0, 1, 0), 1).OnComplete(() => - { - processManager.AddStepToProcess("Teaching", step1); - }); - }, device1); + + // List actions1 = CreateStepActions1(); + // AnimationStep step1 = new AnimationStep($"鎻忚堪姝ラ", 100, actions1); + // processManager.AddStepToProcess("Teaching", step1); + } - step2 = new AnimationStep("Step 2: Click device2", 20, () => - { - device2.transform.DOScale(new Vector3(2, 2, 2), 1).OnComplete(() => - { - processManager.AddStepToProcess("Teaching", step2); - }); - }, device2); + private List CreateStepActions() + { + List actions = new List(); - // 鍚戞祦绋嬩腑娣诲姞姝ラ - processManager.AddStepToProcess("Teaching", step1); - processManager.AddStepToProcess("Teaching", step2); + GameObject obj1 = GameObject.Find("鍙樼數绠盻闂"); + GameObject 鎻掑骇 = GameObject.Find("鎻掑骇"); + Action action1 = () => { }; + Action action2 = () => { }; + + actions.Add(new ActionWithDescription(new List() { obj1,鎻掑骇 }, action1, $"姝ラ {1} 鐨勫姩浣滄弿杩")); + actions.Add(new ActionWithDescription(new List() { 鎻掑骇,obj1}, action1, $"姝ラ {2} 鐨勫姩浣滄弿杩")); + + return actions; + } + + private List CreateStepActions1() + { + List actions = new List(); + + GameObject obj1 = GameObject.Find("鍙樼數绠盻闂"); + GameObject 鎻掑骇 = GameObject.Find("鎻掑骇"); + Action action1 = () => { }; + + actions.Add(new ActionWithDescription(new List() { obj1 }, action1, $"姝ラ {1} 鐨勫姩浣滄弿杩")); + actions.Add(new ActionWithDescription(new List() { 鎻掑骇 }, action1, $"姝ラ {2} 鐨勫姩浣滄弿杩")); + + return actions; } private void Update() @@ -64,6 +82,7 @@ namespace DefaultNamespace.ProcessMode { return hit.collider.gameObject; } + return null; } } diff --git a/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs b/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs index 0d3fa849..cf6121a1 100644 --- a/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs +++ b/SXElectricityInformationAcquisition/Assets/Scripts/ToolsPack/ToolsPackGameObjectComponent.cs @@ -15,7 +15,7 @@ namespace ToolsPack { private HighlightEffect _highlight; private int index; - [SerializeField] private ModelTypeEnum _modelTypeEnum; + [SerializeField] private ModelTypeEnum _modelTypeEnum; private void Awake() { diff --git a/SXElectricityInformationAcquisition/Assets/taoruiqi/Script/ElectricCheckPen.cs b/SXElectricityInformationAcquisition/Assets/taoruiqi/Script/ElectricCheckPen.cs index 909d2123..28157a69 100644 --- a/SXElectricityInformationAcquisition/Assets/taoruiqi/Script/ElectricCheckPen.cs +++ b/SXElectricityInformationAcquisition/Assets/taoruiqi/Script/ElectricCheckPen.cs @@ -69,7 +69,7 @@ public class ElectricCheckPen : MonoBehaviour { ElectricCheckPenOBJ.gameObject.transform.DOLocalMove(new Vector3(3.334f, 0.489f, 0.107f), 1f).OnComplete(() => { - + ElectricCheckPenOBJ.gameObject.transform.DOLocalRotate(new Vector3(20.78f, 72.47f, 171.503f), 1.5f).OnComplete(() => { Debug.Log("123");